安卓OpenGL ES纹理大小必须是2的幂次方

3

我已经知道许多硬件需要使用2次幂大小的纹理,但是正方形图片大小是否强制呢?我的意思是32x32, 64x64和512x512.我能否在所有硬件上使用大小为512x256的纹理?

2个回答

5

是的,纹理可以是非正方形的,这没有问题。只要保持宽度和高度是2的幂次方。


1
不,它必须是2的倍数。但是,您可以通过在图像的顶部和/或底部添加黑色条来绕过此问题,然后使用纹理坐标数组来限制纹理将从图像映射到哪里。例如,假设您有一个13 x 16像素的纹理。您可以在右侧添加3个黑色像素,然后执行以下操作:
static const GLfloat texCoords[] = {
    0.0, 0.0,
    0.0, 13.0/16.0,
    1.0, 0.0,
    1.0, 13.0/16.0
};

现在您可以选择任何尺寸


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接