我想知道GL_MAX_TEXTURE_SIZE变量是否返回一个轴的纹理像素尺寸或两者都加起来(x,y).
例如,在我的电脑上我得到了8192.这是否意味着我可以加载8192*8192*4(256mb)或4096*4096*4(64mb)的纹理?如果是这样,为什么当我的显卡有1GB的视频内存时会发生这种情况?
Chr*_*ica 19
OpenGL规范将其称为最大1D/2D纹理图像尺寸,因此它确实意味着8192x8192
图像.嗯,意思是宽度和高度加起来是非常无意义的,因为这没有任何关于尺寸的说明,8000x192
a-纹理具有与a-纹理完全不同的尺寸4096x4096
.至少乘法会更合理,但在这种情况下8192
意味着一个~90x90
纹理.
但你应该把这些价值观带走.它们实际上只是实现(硬件/驱动程序)允许的上限,因此它不必与硬件的视频内存相匹配.在实践中,视频内存中存储了更多的东西,比如帧缓冲区,VBO,等等,因此给出一些保守的值是非常合理的.同样,它也可能是你的驱动程序开发人员不太注意这个常量(它不是ATI,是吗?)并且只返回一些默认值,你的纹理在实践中实际上可能更大.
就像Robinson在他的评论中所说,它可能还取决于原始内存以外的其他因素,因为纹理内存可能是视频内存中的一些特殊区域,提供了一种特殊的2D寻址/缓存模式.