2011-09-30 27 views
7

WebGL已知有poor support for NPOT (non-power-of-two) textures。但是矩形纹理的宽度和高度都是2的幂数呢?具体来说,我试图画一个矩形帧缓冲区作为渲染到纹理方案的一部分来生成一些UI元素。帧缓冲区需要是512x64或其附近。WebGL和长方形(两个幂)纹理

这对绘图而言效率低多少?如果帧率是一个问题,我是否会更好地分配一个512x512的两倍大小的缓冲区,并只渲染前64个像素,牺牲内存以提高速度?

回答

8

从来没有约束的宽度必须等于高度。

+0

要开发更多关于这个答案:一些压缩纹理扩展*要求*纹理宽度和高度相等(WebGL仍然不支持它们),但这不是限制,也不是标准OpenGL/WebGL行为。 – Chiguireitor

2

更具体地说:2D纹理根本不需要是方形的;不仅允许512x64纹理,而且还应该由驱动程序有效地实现;另一方面立方体地图需要是方形的。

对于2D纹理,如果两种包装模式均为CLAMP_TO_EDGE且您的缩小过滤器不需要mipmap,则可以使用NPOT纹理。 NPOT质地的效率可能因您的司机而异。