OpenGL中的顶点es 2.适用于Android的Java

时间:2014-05-04 15:46:48

标签: java android opengl-es

我正在关注this教程,以学习OpenGl es 2.0。 这些信息(以及许多其他教程)使我得出这样的结论:必须在数组中声明顶点,必须使用FloatBuffer操作将数组发送到GPU内存,从那里它们必须由openGL拾取。 对我来说,接下来有点模糊。问题是:一旦顶点在那里(在gpu内存中),java程序的哪个部分意味着要获取这些数据?着色器和片段代码? vertexattrib数组命令?

1 个答案:

答案 0 :(得分:1)

OpenGL的工作方式非常基础,在发出绘图调用之前,实际情况并不多,例如glDrawArraysglDrawElements。大多数其他调用只是设置将由绘制调用使用的状态。国家最重要的部分是你已经看到的:

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

设置完所有状态并发出绘图调用后,即可设置整个机器。如果您想了解此处发生的所有事情的详细信息,您应该能够找到包含“OpenGL渲染管道”等搜索术语的好材料,或者在任何OpenGL书籍中。非常粗略,主要步骤如下:

  • 固定功能单元根据您使用glVertexAttribArray和相关调用设置的状态抓取顶点数据,并将该数据提供给顶点着色器。
  • 您设置的顶点着色器在其attribute变量中接收此顶点数据,并对其进行处理。
  • 由顶点着色器生成的已处理顶点由固定的功能单元进行光栅化,该功能单元决定需要渲染的像素。
  • 将这些像素(也称为片段)输入片段着色器。
  • 您设置的片段着色器处理这些片段,并输出片段的颜色。
  • 片段着色器生成的颜色将写入帧缓冲区。

除此之外还有更多内容,但我希望这有助于您了解基础知识。