2014-05-04 61 views
0

我正在关注this教程,以了解OpenGl es 2.0。这些信息(加上很多其他教程)让我意识到:顶点必须在数组中声明,必须使用FloatBuffer操作将数组发送到GPU内存,然后必须由openGL获取数组。 接下来对我来说有点模糊。问题是:一旦顶点出现在gpu内存中,java程序的哪一部分就是为了获取这些数据?着色器和片段代码? vertexattrib数组命令?OpenGL es中的顶点2. Java for Android

回答

1

OpenGL在非常基础的层面上工作的方式,直到您发出绘图调用,例如glDrawArraysglDrawElements才会发生。大多数其他调用只是设置将由绘图调用使用的状态。状态的最重要部分是你已经看到的:

  • glVertexAttribArray和相关调用用于指定用于绘制调用的顶点数据。
  • glUseProgram,以及您在构建程序之前使用的所有调用,指定将为您的绘制调用运行哪些着色器。

一旦你建立了所有这个状态并发出一个绘图调用,就可以设置整个机器运动。如果您想了解关于此处发生的所有事情的详细信息,则应该可以使用搜索术语(如“OpenGL渲染管线”)或任何OpenGL书籍查找优质材料。大致来说主要步骤如下:

  • 固定功能单元抓起根据您设置了glVertexAttribArray和相关呼叫状态的顶点数据,和饲料数据到顶点着色器。
  • 您设置的顶点着色器会在其变量attribute中接收该顶点数据,并对其进行处理。
  • 由顶点着色器生成的已处理顶点由固定功能单元进行光栅化,该固定功能单元决定需要渲染哪些像素。
  • 那些像素(又名片段)被送入片段着色器。
  • 您设置的片段着色器处理这些片段,并输出片段的颜色。
  • 您的片段着色器生成的颜色被写入帧缓冲区。

还有比我在这里列出的更多,但我希望这可以帮助你了解基本知识。