你好,我已經嘗試瞭解代碼的這部分發生了什麼,儘可能多,但我沒有運氣。在xcode 4.2中找到的OpenGL遊戲模板(在這段代碼中發生了什麼?!!)
glGenVertexArraysOES(1, &_vertexArray);
glBindVertexArrayOES(_vertexArray);
glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(gCubeVertexData), gCubeVertexData, GL_STATIC_DRAW);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 24, BUFFER_OFFSET(12));
glBindVertexArrayOES(0);
這屬於在xcode 4.2上創建OpenGL遊戲的模板。然而,我完全困惑,如果有人能向我解釋,我會愛上它。
首先,如何在不添加任何內容的情況下生成並綁定_vertexArray?
其次,如果gCubeVertexData是216以下的數組:
GLfloat gCubeVertexData[216] =
{
// Data layout for each line below is:
// positionX, positionY, positionZ, normalX, normalY, normalZ,
0.5f, -0.5f, -0.5f, 1.0f, 0.0f, 0.0f,
0.5f, 0.5f, -0.5f, 1.0f, 0.0f, 0.0f,
我會想,即時通訊處理這個數組以下命令,其中我使GLK的屬性,這就是即時通訊使用什麼指針(仍然使用prev綁定的)。但是,如果我沒有誤認爲語法是,(屬性集,頂點的大小,類型,假的,結構的大小(我認爲不是24),並從數據中偏移(這是從哪裏來的?!))
和最後一個問題,爲什麼我現在將0綁定到頂點數組?
編輯:爲了誠實我在不同的網站嘗試研究有關opengl,但我只能碰到理論而不是實踐。這就是我問這個問題的原因。
非常感謝你,這個代碼是直接從Xcode中自帶的模板。我在網上做了一個使用教程,但它沒有管理的跨步,所以我真的不知道到底是什麼意思。在ios 5上找到用於學習opengl es 2的新資源證明是相當困難的。 – Pochi
@LuisOscar如果答案是解決您的問題,acepting將不勝感激。如果你仍然對你的問題有些不滿,請隨時詢問他們。 –
我很確定我已經做到了,哈哈srry – Pochi