C++ OpenGL glew列表非核心扩展
我问过你C++ OpenGL glew列表非核心扩展,c++,c,opengl,glew,C++,C,Opengl,Glew,我问过你 GLint n; glGetIntegerv(GL_NUM_EXTENSIONS, &n); for(GLint i = 0; i < n; i++) { const char* extension = (const char*)glGetStringi(GL_EXTENSIONS, i); INFORM("Extension #%d: %s", i, extension); } 闪烁n; glGetIntegerv(GL\u NUM\u扩展,&n);
GLint n;
glGetIntegerv(GL_NUM_EXTENSIONS, &n);
for(GLint i = 0; i < n; i++)
{
const char* extension = (const char*)glGetStringi(GL_EXTENSIONS, i);
INFORM("Extension #%d: %s", i, extension);
}
闪烁n;
glGetIntegerv(GL\u NUM\u扩展,&n);
对于(闪烁i=0;i
我支持的扩展
首先,我这里缺少GLX扩展,如何查询这些扩展
第二,如何筛选出核心扩展?例如,列表中的
GL\u ARB\u compute\u着色器
,它绝对是4.4.0版(我的上下文正在使用)的核心。看起来很傻,GLX是一个独立于OpenGL的API,执行glGetStringi
将无法获得任何关于GLX的信息。要查询GLX扩展,您可能需要glXQueryExtensionsString
@PeterT-Hmm谢谢,仔细查看一下。这似乎类似于glGetString(GL\u扩展名)
。是否有类似于glGetStringi(GL_extensions,i)
的版本?说到每次调用查询一个分机,而不是在同一个字符串中同时查询所有分机?@PeterT:在Windows上甚至更愚蠢。您必须创建一个OpenGL上下文来加载查询WGL扩展所需的函数。。。但是您必须加载的函数是WGL扩展()的一部分-幸运的是,这是您将在glu扩展
字符串中看到的一个WGL扩展。否则,这将是一个完全自相矛盾的问题,我不知道。如果我没记错的话,在OpenGL中完成这项工作的全部原因是因为列表变得非常长。我不认为GLX有这个问题,所以他们不必修复它。除非你实现自己的逻辑,否则你不能真正过滤掉升级到core的扩展。您会注意到,如果您曾经为OSX编写GL软件,如果您查询扩展字符串,Apple实际上会这样做。它们列出的唯一扩展是当前上下文版本中不核心的内容。有没有什么特别的原因让你想隐藏核心扩展呢?