我知道在移动设备上,你可以在一次抽奖中渲染的最大纹理有所不同:有时它只有1024x1024 - 其他时间是2048x2048等。
桌面游戏的情况如何?我正在使用OpenGL 2.0。
我打算绘制一个可能大到5000x5000的背景精灵。我猜测TexturePacker在这种情况下并不是很有用,因为我不需要一个地图集,因为我只是想制作一个精灵。
是的,我刚刚测试了5000x5000,它运行得很好。只是想知道是否存在实际限制。也许它不同于一台计算机?
答案 0 :(得分:11)
除了P.T.说,我想为它提供代码(在libGDX中)。
IntBuffer intBuffer = BufferUtils.newIntBuffer(16);
Gdx.gl20.glGetIntegerv(GL20.GL_MAX_TEXTURE_SIZE, intBuffer);
System.out.println(intBuffer.get());
在我的桌面系统上,这会产生4096
,这意味着支持的最大尺寸为4096x4096。我的系统不是那么老了。您可能不应该假设所有桌面系统都可以使用5000x5000。通常,您不需要那么大的纹理,因此并非所有GPU都支持这种纹理。你总是可以将它分成几个纹理并在多个四边形上绘制它们以解决这个问题。
答案 1 :(得分:8)
最大纹理大小是OpenGL的一个功能,它将大小留给视频卡的设备驱动程序(在边界内)。
您可以在运行时检查以查看报告的限制(尽管请参阅Confusion with GL_MAX_TEXTURE_SIZE了解一些注意事项)。
为了找出实际的各种硬件报告,有些网站收集用户结果数据库(主要关注基准性能),通常还会收集最大纹理大小等数据。 (例如,gfxbench.com,或http://opengl.gpuinfo.org/gl_stats_caps_single.php?listreportsbycap=GL_MAX_TEXTURE_SIZE)
我认为在现代桌面上GPU 5000x5000将远远低于支持的限制。