手工查看或者
编写查询程序代码均可.
6 个解决方案
#1
下个everest看opengl那一项有icd信息
#2
#include <GL/gl.h>
#include <string.h>
int isExtensionSupported(const char *extension)
{
const GLubyte *extensions = NULL;
const GLubyte *start;
GLubyte *where, *terminator;
/* Extension names should not have spaces. */
where = (GLubyte *) strchr(extension, ' ');
if (where || *extension == '\0')
return 0;
extensions = glGetString(GL_EXTENSIONS);
/* It takes a bit of care to be fool-proof about parsing the
OpenGL extensions string. Don't be fooled by sub-strings,
etc. */
start = extensions;
for (;;) {
where = (GLubyte *) strstr((const char *) start, extension);
if (!where)
break;
terminator = where + strlen(extension);
if (where == start || *(where - 1) == ' ')
if (*terminator == ' ' || *terminator == '\0')
return 1;
start = terminator;
}
return 0;
}
int hasBGRA = isExtensionSupported("GL_EXT_bgra");
............
#include <string.h>
int isExtensionSupported(const char *extension)
{
const GLubyte *extensions = NULL;
const GLubyte *start;
GLubyte *where, *terminator;
/* Extension names should not have spaces. */
where = (GLubyte *) strchr(extension, ' ');
if (where || *extension == '\0')
return 0;
extensions = glGetString(GL_EXTENSIONS);
/* It takes a bit of care to be fool-proof about parsing the
OpenGL extensions string. Don't be fooled by sub-strings,
etc. */
start = extensions;
for (;;) {
where = (GLubyte *) strstr((const char *) start, extension);
if (!where)
break;
terminator = where + strlen(extension);
if (where == start || *(where - 1) == ' ')
if (*terminator == ' ' || *terminator == '\0')
return 1;
start = terminator;
}
return 0;
}
int hasBGRA = isExtensionSupported("GL_EXT_bgra");
............
#3
可以看看这个网页,提示如何查看当前机器opengl版本的扩展支持的:)
http://www.opengl.org/resources/features/OGLextensions/
http://www.opengl.org/resources/features/OGLextensions/
#4
总结
GL本身并没有提供查询是否安装了ICD的方法,
我估计可以通过WMI得到,但是没找到方法.
我决定用下面的方法来大致猜测是否安装了ICD
(1)用 glGetString(GL_VERSION); 获得GL版本,由于MS的软件实现只有 1.1, 故版本大于 1.1 可以认为有 ICD(或MCD)
(2)用 glGetString(GL_EXTENSIONS); 检查扩展, MS的实现并没有提供太多扩展(猜测), 如果有扩展,则认为有ICD(或MCD).
缺点: (1)(2)都 有可能因为MS增强对GL的支持而得出错误结论.
GL本身并没有提供查询是否安装了ICD的方法,
我估计可以通过WMI得到,但是没找到方法.
我决定用下面的方法来大致猜测是否安装了ICD
(1)用 glGetString(GL_VERSION); 获得GL版本,由于MS的软件实现只有 1.1, 故版本大于 1.1 可以认为有 ICD(或MCD)
(2)用 glGetString(GL_EXTENSIONS); 检查扩展, MS的实现并没有提供太多扩展(猜测), 如果有扩展,则认为有ICD(或MCD).
缺点: (1)(2)都 有可能因为MS增强对GL的支持而得出错误结论.
#5
有个软件 OpenGL Extensions Viewer
甚至列出了ICD驱动的版本号, 但我不知道他是怎么作到的.
甚至列出了ICD驱动的版本号, 但我不知道他是怎么作到的.
#6
如果你想列出extension,getstring还是能够胜任的, 你只要准备一套完备的扩展串,分离这些串,再和你的串一一对比得到
而ICD版本是两回事,他是以来系统的,系统又是依赖驱动信息的,驱动信息依赖硬件。。。。最方便的方法:WIN32的就读注册表, 其他系统的。。。俺不知道~~
当然肯定还有其他的方法, 不过和读注册表不会有什么本质的不同 因为同样依赖你为当前系统安装了什么驱动(相关的inf和驱动文件)
这些信息整理号之后放到了注册表里以备查询, 就算是OS本身也多数是在用注册表来查询硬件信息
除非你对端口访问感兴趣
而ICD版本是两回事,他是以来系统的,系统又是依赖驱动信息的,驱动信息依赖硬件。。。。最方便的方法:WIN32的就读注册表, 其他系统的。。。俺不知道~~
当然肯定还有其他的方法, 不过和读注册表不会有什么本质的不同 因为同样依赖你为当前系统安装了什么驱动(相关的inf和驱动文件)
这些信息整理号之后放到了注册表里以备查询, 就算是OS本身也多数是在用注册表来查询硬件信息
除非你对端口访问感兴趣
#1
下个everest看opengl那一项有icd信息
#2
#include <GL/gl.h>
#include <string.h>
int isExtensionSupported(const char *extension)
{
const GLubyte *extensions = NULL;
const GLubyte *start;
GLubyte *where, *terminator;
/* Extension names should not have spaces. */
where = (GLubyte *) strchr(extension, ' ');
if (where || *extension == '\0')
return 0;
extensions = glGetString(GL_EXTENSIONS);
/* It takes a bit of care to be fool-proof about parsing the
OpenGL extensions string. Don't be fooled by sub-strings,
etc. */
start = extensions;
for (;;) {
where = (GLubyte *) strstr((const char *) start, extension);
if (!where)
break;
terminator = where + strlen(extension);
if (where == start || *(where - 1) == ' ')
if (*terminator == ' ' || *terminator == '\0')
return 1;
start = terminator;
}
return 0;
}
int hasBGRA = isExtensionSupported("GL_EXT_bgra");
............
#include <string.h>
int isExtensionSupported(const char *extension)
{
const GLubyte *extensions = NULL;
const GLubyte *start;
GLubyte *where, *terminator;
/* Extension names should not have spaces. */
where = (GLubyte *) strchr(extension, ' ');
if (where || *extension == '\0')
return 0;
extensions = glGetString(GL_EXTENSIONS);
/* It takes a bit of care to be fool-proof about parsing the
OpenGL extensions string. Don't be fooled by sub-strings,
etc. */
start = extensions;
for (;;) {
where = (GLubyte *) strstr((const char *) start, extension);
if (!where)
break;
terminator = where + strlen(extension);
if (where == start || *(where - 1) == ' ')
if (*terminator == ' ' || *terminator == '\0')
return 1;
start = terminator;
}
return 0;
}
int hasBGRA = isExtensionSupported("GL_EXT_bgra");
............
#3
可以看看这个网页,提示如何查看当前机器opengl版本的扩展支持的:)
http://www.opengl.org/resources/features/OGLextensions/
http://www.opengl.org/resources/features/OGLextensions/
#4
总结
GL本身并没有提供查询是否安装了ICD的方法,
我估计可以通过WMI得到,但是没找到方法.
我决定用下面的方法来大致猜测是否安装了ICD
(1)用 glGetString(GL_VERSION); 获得GL版本,由于MS的软件实现只有 1.1, 故版本大于 1.1 可以认为有 ICD(或MCD)
(2)用 glGetString(GL_EXTENSIONS); 检查扩展, MS的实现并没有提供太多扩展(猜测), 如果有扩展,则认为有ICD(或MCD).
缺点: (1)(2)都 有可能因为MS增强对GL的支持而得出错误结论.
GL本身并没有提供查询是否安装了ICD的方法,
我估计可以通过WMI得到,但是没找到方法.
我决定用下面的方法来大致猜测是否安装了ICD
(1)用 glGetString(GL_VERSION); 获得GL版本,由于MS的软件实现只有 1.1, 故版本大于 1.1 可以认为有 ICD(或MCD)
(2)用 glGetString(GL_EXTENSIONS); 检查扩展, MS的实现并没有提供太多扩展(猜测), 如果有扩展,则认为有ICD(或MCD).
缺点: (1)(2)都 有可能因为MS增强对GL的支持而得出错误结论.
#5
有个软件 OpenGL Extensions Viewer
甚至列出了ICD驱动的版本号, 但我不知道他是怎么作到的.
甚至列出了ICD驱动的版本号, 但我不知道他是怎么作到的.
#6
如果你想列出extension,getstring还是能够胜任的, 你只要准备一套完备的扩展串,分离这些串,再和你的串一一对比得到
而ICD版本是两回事,他是以来系统的,系统又是依赖驱动信息的,驱动信息依赖硬件。。。。最方便的方法:WIN32的就读注册表, 其他系统的。。。俺不知道~~
当然肯定还有其他的方法, 不过和读注册表不会有什么本质的不同 因为同样依赖你为当前系统安装了什么驱动(相关的inf和驱动文件)
这些信息整理号之后放到了注册表里以备查询, 就算是OS本身也多数是在用注册表来查询硬件信息
除非你对端口访问感兴趣
而ICD版本是两回事,他是以来系统的,系统又是依赖驱动信息的,驱动信息依赖硬件。。。。最方便的方法:WIN32的就读注册表, 其他系统的。。。俺不知道~~
当然肯定还有其他的方法, 不过和读注册表不会有什么本质的不同 因为同样依赖你为当前系统安装了什么驱动(相关的inf和驱动文件)
这些信息整理号之后放到了注册表里以备查询, 就算是OS本身也多数是在用注册表来查询硬件信息
除非你对端口访问感兴趣