java - OGL ES 2.0 平面纹理

标签 java android opengl-es-2.0 textures

我在向两个三角形的平面显示纹理时遇到了麻烦。 我的纹理是 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

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

这是我的 fragment 着色器代码:

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
        };

我不确定我的渲染代码是否有帮助,如果您需要,我可以添加它。但我不想根据需要使这个问题变得更大。 也许有人知道这里发生了什么!?

提前谢谢您! 泽德1984

最佳答案

您有 6 个顶点和 4 个纹理坐标。您需要拥有相同数量的两者(6 和 6)。

对于每个顶点,您希望在同一索引处定义该顶点的纹理坐标;顶点 4 必须与 texcoord 4 匹配,顶点 5 必须与 texcoord 5 匹配,等等。

为了实现透明度,您需要启用混合:glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

每当您遇到渲染问题时,通常都应该包含渲染代码。

关于java - OGL ES 2.0 平面纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147357/

相关文章:

Android Opengl ES 2 绘制大纹理速度慢

java - 拆分为多个字符

java - 嵌套的 Spring Transaction 从不回滚

java - 指定 dependsOnMethods 时,testng 未按优先顺序运行

java - java.time.LocalDate 导入失败

c# - Android UI 元素统一

java - 为什么我无法覆盖 <include> 标记上的 ID?

求Android ExoPlayer很慢

android - 如何在 Linux 和 Android 中使用 OpenGL-ES 2.0

opengl-es - 使用 iOS 的 OpenGL ES 2.0 上的无缝立方体贴图?