检查GPU OpenGL限制

all*_*ace 4 opengl gpu

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

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

Fle*_*exo 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

例如:

GLint result;
glGetIntegerv(GL_MAX_VARYING_FLOATS, &result);
Run Code Online (Sandbox Code Playgroud)

不太确定你的项目要实现什么,但如果它是通用计算而你还没有意识到它,你可能会对OpenCL感兴趣.特别是Cl/GL互操作,如果有图形元素,你的硬件也支持它.

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