在我的2D游戏中,我需要可能是任意大的纹理,可以是NPOT和非正方形。通过GL_QUADS矩形(四个QUAD角映射到四个纹理角落): 他们永远只能映射到一个一种原始的。有时纹理矩阵在绘制之前已经缩放。模拟旧的GPU的大NPOT纹理
我希望我的游戏能够在任何地方工作,即使是只允许小型和/或POT纹理的旧/便宜的视频卡。 我应该使用什么解决方案?应该...
- 很容易实现
- 有非常不错的表现。
目前我知道的下列选项:
使用一个extension像
GL_TEXTURE_RECTANGLE_{EXT,NV,ARB}
所以NPOT工作在不支持原生OGL2.0纹理NPOT卡。- 这并没有解决“大质地”的问题。
- 它在PC上的最大数量的工作吗?那么支持原生OGL2.0 NPOT的视频卡也支持这些扩展?
- 要使用的三种版本EXT/NV/ARB的?
将BigTextures作为一束小小的POT纹理切片实现,这些切片仔细地绘制在几个相邻的QUAD上。这既提供了“大纹理”和NPOT,但它有点困难和限制。
- 实现我的NPOT纹理作为POT纹理填充透明的右侧和底部。会浪费记忆并使纹理平铺更难一点,并且不能解决“质地粗糙”问题。
- 使用一些预制的解决方案。
有问题的显卡的一个例子是移动式英特尔945GM Express芯片组这似乎不支持本地NPOT。
更新:我结束了使用第三个选项。很酷的是,我能够使用glTexSubImage2D,而不是手动填充纹理。这太疯狂了。是的,它不提供“大质感”支持,但是我意识到我的目标GPU支持高达2048x2048,这对我来说已经足够好了。哦,GL_TEXTURE_RECTANGLE_EXT甚至不支持在移动式英特尔945GM Express芯片组。