Java OGL ES 2.0平面纹理

Java OGL ES 2.0平面纹理,java,android,opengl-es-2.0,textures,Java,Android,Opengl Es 2.0,Textures,我让troube在两个三角形的平面上显示纹理。 我的纹理是一个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

我让troube在两个三角形的平面上显示纹理。 我的纹理是一个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;
我所做的是创建平面并显示一半的纹理。结果如下所示:

所以。纹理仅在第一个三角形上可见。我读到,当三角形以错误的顺序渲染时可能会出现问题,但是当我更改第二个三角形的顺序时,它没有任何效果。我还认为在黑色可见的地方,纹理应该是透明的。你知道我会做错什么吗

以下是我的片段着色器代码:

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有6个顶点和4个纹理坐标。您需要具有相同的数量(6和6)

对于每个顶点,要在同一索引处为该顶点定义texcoord;顶点4必须与texcoord 4匹配,顶点5必须与texcoord 5匹配,以此类推

对于透明度,您需要启用混合:
glEnable(GL\u混合);glBlendFunc(GL_SRC_ALPHA,GL_ONE_减去GL_SRC_ALPHA)


通常,在出现渲染问题时,也应始终包含渲染代码

非常感谢你!现在看起来很好!我想我必须把飞机作为一个整体来处理,这就是为什么我使用了4个textcoords。但这是有道理的!谢谢