1

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

我找到了解决 3d 对象与照明的教程,但它们正在解决更复杂的场景。

我该怎么做?

4

1 回答 1

1

在 GLES 2.0 中,fixed-function pipeline已替换为 可编程shaders。这意味着您不再可以简单地在对象上“启用”纹理,而必须自己创建实现。通常,您需要为texture-coordinate几何图形的 2d 纹理空间提供一个属性以及一个纹理采样器。

这是一个使用纹理的顶点和片段着色器的简单示例:

顶点着色器:

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

然后,在绘制之前,您必须绑定纹理。如果每次绘图调用只使用一个纹理,那么就这么简单。

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

于 2012-12-08T21:54:10.650 回答