我想知道GL_MAX_TEXTURE_SIZE变量返回的是一个轴的纹理像素尺寸,还是两个轴相加的纹理像素尺寸(x,y)。
例如,在我的pc上,我得到的结果是8192。这是否意味着我可以加载8192*8192*4(256mb)或4096*4096*4 (64mb)的纹理?如果是这样,为什么当我的显卡有1 1gb显存时会发生这种情况??
发布于 2012-03-18 21:44:22
OpenGL规范称其为最大1D/2D纹理图像尺寸,因此它实际上意味着8192x8192-image。嗯,这意味着把宽度和高度加起来是没有意义的,因为这并没有说明任何关于大小的问题,8000x192-texture和4096x4096-texture的大小是完全不同的。至少乘法会更合理,但在本例中,8192指的是~90x90-texture。
但你应该对这些值持保留态度。它们实际上只是实现(硬件/驱动程序)允许的上限,所以它不必与硬件的显存匹配。实际上,视频内存中存储的内容要多得多,比如帧缓冲区、VBO等等,所以给出一些保守值是非常合理的。同样,也可能是您的驱动程序开发人员不太注意这个常量(它不是ATI,对吧?)只需返回一些默认值,您的纹理实际上可以更大。
正如Robinson在他的评论中所说,它也可能取决于原始内存之外的其他东西,因为纹理内存可能是视频内存中的某个特殊区域,提供一种特殊的2D寻址/缓存模式。
https://stackoverflow.com/questions/9758209
复制相似问题