我把纹理显示在两个三角形的平面上。我的纹理是一个32x32的RGBA位图。我正在为android开发。
我的平面是这样创建的:
float[] vertices = new float[24];
// first triangle
vertices[0] = 0.0f;
vertices[1] = 0.0f;
vertices[2] = 0.0f;
vertices[3] = 1.0f;
vertices[4] = 0.0f;
vertices[5] = fHeight;
vertices[6] = 0.0f;
vertices[7] = 1.0f;
vertices[8] = fWidth;
vertices[9] = fHeight;
vertices[10] = 0.0f;
vertices[11] = 1.0f;
// second triangle
vertices[12] = fWidth;
vertices[13] = fHeight;
vertices[14] = 0.0f;
vertices[15] = 1.0f;
vertices[16] = fWidth;
vertices[17] = 0.0f;
vertices[18] = 0.0f;
vertices[19] = 1.0f;
vertices[20] = 0.0f;
vertices[21] = 0.0f;
vertices[22] = 0.0f;
vertices[23] = 1.0f;我所做的就是创建平面并显示一半的纹理。结果如下所示:Result http://www.imagecrate.de/u/1346090743_texture.png
所以。纹理仅在第一个三角形上可见。我读到,当三角形以错误的顺序呈现时可能会出现问题,但当我更改第二个三角形的顺序时,它没有任何影响。此外,我认为纹理应该是透明的,黑色是可见的。你知道我会做错什么吗?
下面是我的片段着色器代码:
precision mediump float;
varying vec2 vTexCoord;
uniform sampler2D sTexture;
void main()
{
gl_FragColor = texture2D(sTexture, vTexCoord);
}下面是我的纹理坐标:
float[] mVertsData1 =
{
0.0f, 0.0f, // TexCoord 0
0.0f, 1.0f, // TexCoord 1
1.0f, 1.0f, // TexCoord 2
1.0f, 0.0f // TexCoord 3
};我不确定我的渲染代码在这里是否有用,如果你需要的话,我可以添加它。但我不想让这个问题变得更大。也许有人知道这里发生了什么!?
提前谢谢你!Zerd1984
发布于 2012-08-28 02:35:58
你有6个顶点和4个纹理坐标。您需要同时拥有相同数量的(6和6)。
对于每个顶点,您需要在相同的索引处定义该顶点的texcoord;顶点4必须与texcoord 4匹配,顶点5与texcoord 5匹配,依此类推。
为了提高透明度,你需要启用混合:glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
当你有渲染问题的时候,你通常应该包括你的渲染代码。
https://stackoverflow.com/questions/12147357
复制相似问题