OpenGL对扩展是否支持的检测的方法
来源:互联网 发布:mac系统翻墙 编辑:程序博客网 时间:2024/05/21 12:40
中午写的博文中,认为glcolortable()函数发生错误是opengl版本问题或者是显卡问题,经过一下午的在查看资料发现,其主要原因是对opengl GL_ARB_imaging扩展模块的不支持。查看glew.h头文件你会发现glColorTable()函数定义在GL_ARB_imaging下面。我们如何查看计算机是否对GL_ARB_imaging支持那,请看下面代码:
static GLboolean CheckExtension(char *extName, const char *extString) {/* ** Search for extName in the extensions string. Use of strstr() ** is not sufficient because extension names can be prefixes of ** other extension names. Could use strtok() but the constant ** string returned by glGetString can be in read-only memory. */char *p = (char *)extString;char *end;int extNameLen;extNameLen = strlen(extName);end = p + strlen(p);while (p < end) { int n = strcspn(p, " "); if ((extNameLen == n) && (strncmp(extName, p, n) == 0)) {return GL_TRUE; } p += (n + 1);}return GL_FALSE; }
const GLubyte *ext_string; int new_ext_supported = GL_FALSE; if (CheckExtension("GL_ARB_imaging", glGetString(GL_EXTENSIONS)))new_ext_supported = GL_TRUE;
以上代码来自:http://www.opengl.org/registry/doc/rules.html
glGetString(GL_EXTENSIONS)获取opengl扩展的支持字符串,CheckExtension()函数是对字符串的分析,第一个参数为扩展名称。
opengl的扩展名称以及之间的包含关系可以在glew.h中查看。
glColortable函数属于GL_ARB_imaging,
glGenVertexArrays属于GL_ARB_vertex_array_object扩展。
在使用glColortable之前应该检测一下计算机是否支持GL_ARB_imaging,以防止程序崩溃。
也可以通过如下面判断:
PFNGLCOLORTABLEPROC pGLColorTable = NULL;
pGLColorTable = (PFNGLCOLORTABLEPROC)wglGetProcAddress("glColorTable");
如果pGLColorTable为空,则不支持。
另一种方法:
// 检测图像子集if(gltIsExtSupported("GL_ARB_imaging") == 0){ printf("Imaging subset not supported\r\n"); return 0;}
- OpenGL对扩展是否支持的检测的方法
- 检测扩展是否开启的方法
- 检测浏览器是否支持CSS3的方法
- 4种检测是否支持HTML5的方法
- 检测浏览器是否支持hmtl5视频的方法
- 检测 gcc 是否支持 C99 标准的方法
- 检测自己的浏览器是否支持WebGL
- opengl: Opengl的扩展
- iPhone对OpenGL ES的支持程度!
- iPhone对OpenGL ES的支持程度!
- 查看显卡对OpenGL的支持程度
- PHP扩展:Zend引擎对扩展中自定义方法的支持机制
- 【OpenGL】查看显卡对OpenGL的支持程度
- 检测手机对MMAPI支持的情况
- 检测手机对MMAPI支持的情况
- 检测手机对MMAPI支持的情况
- 检测手机对MMAPI支持的情况
- 检测手机对MMAPI支持的情况
- 2、Cocoa Touch
- cocos2d-x 文字描边
- 安装和使用memcached
- Visio 文本框大小设置
- usaco/1.1 Greedy Gift Givers
- OpenGL对扩展是否支持的检测的方法
- Erlang学习笔记
- iOS中使用GCD/多线程:在下载的过程中显示动画
- HTML5就是现在:深入了解Polyfills
- 在Ubuntu上为Android系统内置C可执行程序测试Linux内核驱动程序
- icon 小图标
- Oracle分析函数Lead(),Lag()
- 两则glib使用技巧
- [转]redhat配置centos yum源