我正在关注this教程,以学习OpenGl es 2.0。 这些信息(以及许多其他教程)使我得出这样的结论:必须在数组中声明顶点,必须使用FloatBuffer操作将数组发送到GPU内存,从那里它们必须由openGL拾取。 对我来说,接下来有点模糊。问题是:一旦顶点在那里(在gpu内存中),java程序的哪个部分意味着要获取这些数据?着色器和片段代码? vertexattrib数组命令?
答案 0 :(得分:1)
OpenGL的工作方式非常基础,在发出绘图调用之前,实际情况并不多,例如glDrawArrays
或glDrawElements
。大多数其他调用只是设置将由绘制调用使用的状态。国家最重要的部分是你已经看到的:
glVertexAttribArray
和相关调用用于指定用于绘制调用的顶点数据。glUseProgram
,以及之前用于构建程序的所有调用,指定将为绘制调用运行的着色器。设置完所有状态并发出绘图调用后,即可设置整个机器。如果您想了解此处发生的所有事情的详细信息,您应该能够找到包含“OpenGL渲染管道”等搜索术语的好材料,或者在任何OpenGL书籍中。非常粗略,主要步骤如下:
glVertexAttribArray
和相关调用设置的状态抓取顶点数据,并将该数据提供给顶点着色器。attribute
变量中接收此顶点数据,并对其进行处理。除此之外还有更多内容,但我希望这有助于您了解基础知识。