在将我的当前渲染系统转换为openGL之前,我有一个快速的问题。我听说纹理需要是2的幂次方大小才能存储用于渲染。这是真的吗?
我的应用程序非常严格地使用内存,但大多数位图不是2的幂次方。存储非2的幂次方纹理会消耗更多的内存吗?
根据OpenGL ES版本的不同,这是正确的,OpenGL ES 1.0/1.1有二次幂限制。OpenGL ES 2.0没有此限制,但它对非二次幂纹理的环绕模式进行了限制。
创建更大的纹理以匹配POT尺寸会浪费纹理内存。
static const GLfloat texCoords[] = {
0.0, 0.0,
0.0, 13.0/16.0,
1.0, 0.0,
1.0, 13.0/16.0
};
glGetString(GL_EXTENSIONS)
并搜索所需的扩展名来检查这些扩展。我还建议将纹理大小保持为4的倍数,因为某些硬件会拉伸纹理。