纹理是否也需要遵守某些格式限制?
我正在加载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显示正常。72x16、80x16和96x16不起作用。
如果需要,我将提供更多信息,包括TGA文件。
72、80和96不是二的幂;这一要求与OpenGL ES中的数据格式几乎没有关系。即使在现代桌面GL中,这一要求也很普遍,因为它可能取决于所使用的数据格式。
(桌面)OpenGL 2.0或更高版本中的未压缩纹理数据可以具有非二维幂。
然而,压缩的纹理数据仍然需要4的倍数的块大小,像素传输函数继续假设图像中每行的4字节数据对齐,浮点纹理(如果支持)也可能需要2的幂,等等
许多为GL设计的图像库实际上会将内容重新缩放为2的幂,这可以解决上面讨论的每一个问题。这并不总是解决维度问题的最合适的方法(可能会非常浪费),但它可以普遍应用于任何常见的维度问题。