2014-05-04 62 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中接收該頂點數據,並對其進行處理。
  • 由頂點着色器生成的已處理頂點由固定功能單元進行光柵化,該固定功能單元決定需要渲染哪些像素。
  • 那些像素(又名片段)被送入片段着色器。
  • 您設置的片段着色器處理這些片段,並輸出片段的顏色。
  • 您的片段着色器生成的顏色被寫入幀緩衝區。

還有比我在這裏列出的更多,但我希望這可以幫助你瞭解基本知識。