java - libgdx 中使用的 VertexAttribute() 中的第三个参数是什么?

标签 java android libgdx

嘿,我正在浏览 libgdx 的 wiki 上的基本教程,我被这行弄糊涂了

new VertexAttribute(Usage.Position, 3, "a_position"));

字符串“a_position”有什么用?

最佳答案

Mesh 类适用于 OpenGL ES 1.x 和 2.0。在 OpenGL ES 1.x 中,您使用固定功能管道(无着色器)。这里的属性没有任何用处。在 OpenGL ES 2.0 中,您可以编写所谓的顶点和 fragment 着色器。如果您将一个网格(或者更确切地说是它的顶点)发送到您的顶点/fragment 着色器对,您的着色器必须有一种方法来识别特定的顶点属性,比如顶点位置、纹理坐标、颜色等等。

着色器是用一种称为 GLSL 的语言编写的。顶点着色器可能如下所示:

attribute vec4 a_Position;
attribute vec4 a_Normal;
attribute vec2 a_TexCoord;

uniform mat4 u_projView;

varying vec2 v_texCoords;
varying vec4 v_color;

void main() {
    v_color = vec4(1, 0, 0, 1);
    v_texCoords = a_TexCoord;
    gl_Position = u_projView * a_Position;
}

如您所见,有一些所谓的属性与 libgdx 中的 VertexAttributes 完全相同。因此,第三个参数是在着色器中使用的 VertexAttribute 的名称(如果您为了方便而不是直接使用 GLES 2.0 函数而使用它,那么 libgdx 中的 ShaderProgram 也是如此)。

嗯, 马里奥

关于java - libgdx 中使用的 VertexAttribute() 中的第三个参数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5814927/

相关文章:

java - 我收到错误解析数据 org.json.JSONException

java - 查找给定字符串中字符的重复次数并对其进行排序?

java - 测量 GC 暂停时间的最佳方法是什么?

Android 支持 v7 库给出了一堆丢失的资源错误

java - 从 Libgdx 渲染方法启动 Android Intent

java - 为什么servlet的init()方法运行在不同的线程中?

android - Dagger2 范围,每个组件的实例

android - Error :Execution failed for task ':app:transformClassesWithJarMergingForDebug' 的解决方法是什么

java - libgdx - box2d 速度和力不起作用

java - Box2d 内存泄漏