代码之家  ›  专栏  ›  技术社区  ›  Martijn Courteaux

OpenGL:可以使用像2500*2500像素这样的纹理吗?

  •  2
  • Martijn Courteaux  · 技术社区  · 16 年前

    当然,纹理不会在屏幕上完全可见。我可以让它总是画出可见的部分(用 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 对于一款跨平台的商业游戏来说不算多?知道人们可以拥有各种各样的图形卡。

    2 回复  |  直到 14 年前
        1
  •  3
  •   cHao    16 年前

    对于一种纹理来说这是很多。如果显卡有足够的内存(至少32MB,如果你的游戏中没有其他东西的话),这应该不是一个太大的问题!128MB实际上更合理),但如果不是这样的话,系统就必须在每帧视频卡上按位,只要它在屏幕上。这可能导致经济大幅放缓。

    如果你能让纹理变小,我强烈推荐它。如果可能的话,因为它不会一次全部可见,你可以试着把它分成几个部分——只有可见的部分必须在视频内存中,这意味着如果你把它分在正确的位置,所用的内存就会更少。

        2
  •  1
  •   Bahbar    16 年前

    我相信支持SM3的卡可以保证4Kx4K纹理可以正常工作(不过,还没有找到确认信息)。

    支持 DX10 保证8Kx8k纹理可以工作。

    正如其他人所说,两种纹理的力量应该是首选。

    最后但并非最不重要的是,最大尺寸不仅与所使用的内存有关,它还直接影响到硬件处理纹理坐标的精度。例如,由于DX10要求可以访问高达6位的子纹理精度,因此硬件必须以地址为19=13(对于8k纹理)+6位(对于子纹理寻址)的格式处理纹理坐标(暂时忽略重复包裹模式)。