在OpenGL ES 2.0中,将图像映射到正方形(2个三角形条带)的最简单方法是什么?

时间:2012-12-08 20:53:07

标签: android opengl-es-2.0

我似乎无法找到一个简单的教程来解决我怀疑是一个过于简单的问题: 我有一个由三角形条带构成的正方形。我想将图像映射到它(游戏精灵)。一切都是2d,没有使用照明。

我找到了使用光照处理3d对象的教程,但它们正在解决更为复杂的场景。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

在GLES 2.0中,fixed-function pipeline已被可编程shaders取代。这意味着您不再可以简单地“启用”对象上的纹理,而是必须自己创建实现。通常,您需要为几何体的二维纹理空间以及纹理采样器设置texture-coordinate属性。

以下是使用纹理的顶点和片段着色器的简单示例:

顶点着色器:

attribute vec4 vertexPosition;
attribute vec2 texCoords;
uniform mat4 mvpMatrix;
varying vec2 uv;
void main(){
    gl_Position = mvpMatrix*vertexPosition;
    uv = texCoords;
}

片段着色器:

uniform sampler2D texture;
varying vec2 uv;
void main(){
    gl_FragColor = texture2D(texture, uv);
}

然后,在绘制之前,你必须bind the texture。如果每个绘图调用只使用一个纹理,那么它就像那样简单。

有关加载和使用纹理的更多代码示例,请查看Android Api-demos

中的GLES20示例项目