纹理是否需要遵守某些格式限制?
我正在加载TGA文件并使用以下片段着色器绘制它们:
varying vec2 v_texCoord;
uniform sampler2D s_texture;
uniform vec4 vColor4;
void main()
{
vec4 tmpColor = texture2D( s_texture, v_texCoord );
tmpColor.r = vColor4.r;
tmpColor.g = vColor4.g;
tmpColor.b = vColor4.b;
gl_FragColor = tmpColor;
}
我发现16x16图像显示正常。 64x16显示OK。 72x16,80x16和96x16不起作用。
如果需要,我会提供更多信息,包括TGA文件。
答案 0 :(得分:0)
(桌面)OpenGL 2.0或更高版本中的未压缩纹理数据可以具有非二次幂的维度。
然而,压缩纹理数据继续要求块大小为4的倍数,像素传输函数继续假设图像中每行的4字节数据对齐,浮点纹理,如果支持也可能需要2的幂等等。
为GL设计的许多图像库实际上会将内容重新调整为二次幂,这可以解决上面讨论的每个问题。修复尺寸问题并不总是最合适的方式(可能非常浪费),但它可以普遍适用于任何常见尺寸问题。