检查GPU OpenGL限制

时间:2011-02-15 12:45:50

标签: opengl gpu

我想知道是否有一种简单的方法可以查询(以编程方式)GPU OpenGL限制以获得以下功能:
- 最大2D纹理尺寸
- 最大3D纹理尺寸
- 顶点着色器属性的最大数量
- 变化浮子的最大数量
- 纹理图像单元的数量(在顶点着色器和片段着色器中)
- 最大绘制缓冲区数

在编写GPU研究项目之前,我需要事先知道这些数字。

2 个答案:

答案 0 :(得分:11)

glGet()是你的朋友,有:

  • GL_MAX_3D_TEXTURE_SIZE
  • GL_MAX_TEXTURE_SIZE
  • GL_MAX_VERTEX_ATTRIBS
  • GL_MAX_VARYING_FLOATS
  • GL_MAX_TEXTURE_UNITS
  • GL_MAX_DRAW_BUFFERS

e.g:

GLint result;
glGetIntegerv(GL_MAX_VARYING_FLOATS, &result);

不太确定您的项目要实现的目标,但如果它是通用计算并且您还没有意识到它,您可能会对OpenCL感兴趣。特别是Cl/GL interop如果还有图形元素,并且您的硬件支持它。

正如Damon在实践中的评论中指出的那样,纹理尺寸可能比这更复杂。出现问题是因为渲染可能会因某些尺寸的纹理而从硬件回退到软件,并且还因为纹理的大小根据所使用的像素格式而变化。要解决此问题,可以使用GL_PROXY_TEXTURE_* with glTexImage*

答案 1 :(得分:1)

作为“awoodland”所说内容的补充,如果你还不知道......我想你应该看看GLEW ......

GLEW提供了高效的运行时机制,用于确定目标平台上支持哪些OpenGL扩展。

http://glew.sourceforge.net/