当然,纹理在屏幕上不会完全可见。我可以让它始终只绘制可见部分(使用 glTexCoord2f
然后使用 glVertex2f
)。 (这是一个大的“水平”图像,我必须为滑动相机移动它)。请注意,此渲染在我的游戏中必须是实时的(游戏是用 C++
编写的)。
简短的计算:
2,500 * 2,500 = 6,250,000 pixels 6,250,000 pixels * 4 bytes / pixel = 25,000,000 bytes 25,000,000 bytes = 23.8 MiB
那么,对于跨平台商业游戏来说,23.8 MiB
是不是太多了?知道人们可以拥有各种图形卡。
最佳答案
对于一个纹理来说这已经很多了。如果显卡有足够的内存(至少 32MB,而且如果你的游戏中没有其他东西的话!128MB 实际上更合理),那么应该不会有太大的问题,但如果没有的话只要屏幕上有每一帧,系统就必须将这些位推送到视频卡。这可能会导致速度大幅放缓。
如果你可以把纹理变小,我强烈推荐它。如果可能的话,由于它不会同时全部可见,您可以尝试将其分成几部分 - 只有可见的部分必须位于视频内存中,这意味着如果您在右侧将其分解,则使用的内存会更少地点。
关于c++ - OpenGL:使用 2500*2500 像素的纹理是否可以接受?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3512413/