我想知道是否有一种简单的方法来查询(编程)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*一起使用.