我似乎找不到一个简单的教程来解决我怀疑是一个过于简单的问题:我有一个由三角形带构成的正方形。我想将图像映射到它(游戏精灵)。一切都是二维的,并且没有使用照明。
我找到了解决 3d 对象与照明的教程,但它们正在解决更复杂的场景。
我该怎么做?
我似乎找不到一个简单的教程来解决我怀疑是一个过于简单的问题:我有一个由三角形带构成的正方形。我想将图像映射到它(游戏精灵)。一切都是二维的,并且没有使用照明。
我找到了解决 3d 对象与照明的教程,但它们正在解决更复杂的场景。
我该怎么做?
在 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 示例项目