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

标签 android opengl-es-2.0

我似乎找不到一个简单的教程来解决我怀疑是一个过于简单的问题: 我有一个由三角形条构成的正方形。我想将图像映射到它(游戏 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/

相关文章:

java - android 中 ProgressDialog 的 Robolectric 测试

php - 在 AsyncTask 上的 android 错误中更改密码功能

android - 如何使用android :duplicateParentState?继承焦点

java - 使用谷歌地图的 Android 编程错误 "No view found for id for fragment "

opengl - 对于制服和顶点属性,OpenGL 索引和位置是否相同?

java - 具有 OpenGL ES 3.1 上下文的 GLSurfaceView

Android OpenGL ES 2 和 armeabi-v7a

安卓应用在市场上发布

java - 无法使用 GAPID 在 Android 模拟器上启动跟踪

scala - 在 Scala 中重现 Java OpenGL ES 2.0 演示时出现奇怪的 NullPointerException