我似乎找不到一个简单的教程来解决我怀疑是一个过于简单的问题: 我有一个由三角形条构成的正方形。我想将图像映射到它(游戏 Sprite )。一切都是二维的,没有使用照明。
我找到了解决 3d 物体光照问题的教程,但它们解决的场景要复杂得多。
我该怎么做?
最佳答案
在 GLES 2.0 中,fixed-function pipeline
已替换为可编程 shaders
.这意味着您不能再简单地在对象上“启用”纹理,而必须自己创建实现。通常,您需要为几何体的 2d 纹理空间设置一个 texture-coordinate
属性以及一个纹理采样器。
这是一个使用纹理的顶点和 fragment 着色器的简单示例:
顶点着色器:
attribute vec4 vertexPosition;
attribute vec2 texCoords;
uniform mat4 mvpMatrix;
varying vec2 uv;
void main(){
gl_Position = mvpMatrix*vertexPosition;
uv = texCoords;
}
fragment 着色器:
uniform sampler2D texture;
varying vec2 uv;
void main(){
gl_FragColor = texture2D(texture, uv);
}
然后,在绘图之前你必须bind the texture .如果每次绘图调用只使用一个纹理,那么它就这么简单。
有关加载和使用纹理的更多代码示例,请查看 Android 中的 GLES20 示例项目 Api-demos
关于android - 在 OpenGL ES 2.0 中将图像映射到正方形(2 个三角形带)的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13781836/