2012-12-17 35 views
1

我正在學習從這個tutotrials: http://en.wikibooks.org/wiki/Category:OpenGL_Programming http://www.opengl-tutorial.org/OpenGL的多立方,旋轉,移動

我從http://www.opengl-tutorial.org/使修改後的7.th教訓立方體旋轉,現在我想要做的是在不同的地方有兩個或樹立方體,並使它們旋轉(立方體),但我真的不知道該怎麼做。所以我問,希望得到一些幫助。

旋轉由該代碼所做的:

glm::vec3 axis_y(0, 1, 0); 
glm::mat4 anim = glm::rotate(glm::mat4(1.0f), angle, axis_y); 
... 
glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix * anim; 

回答

4

我沒有去通過教程的細節,但在原則上,你需要創建一個模型矩陣的每個立方體,然後使用立方體的模型矩陣(和全局視圖&投影矩陣)構造自己的值MVP呈現每個立方體。

上面可以給你三個相同的立方體在不同的位置,旋轉和尺度。如果你想要三個不同的對象,你需要分別加載它們,最好是加載到它自己的緩衝區對象中。

編輯

我不知道該教程使用的庫,但該編碼的原則可能是沿着這些線路:

for (int idxCube = 0; idxCube < 3; ++idxCube) { 
    glm::mat4 offset = glm::translate(10 * idxCube, 0, 0); 
    glm::mat4 MVP = ProjectionMatrix * ViewMatrix * ModelMatrix * offset * anim; 
    glUniformMatrix4fv(MatrixID, 1, GL_FALSE, &MVP[0][0]); 
    glDrawArrays(...); 
} 

這將在位置(0, 0, 0)給3個方塊, (10, 0, 0)(20, 0, 0)

更一般地說,每個立方體只需一個ModelMatrix

+0

我看你在說什麼,你能給我一個如何轉化爲代碼的例子嗎? – Jan

+0

@Jan我已經擴大了答案,這是可以理解的嗎? – Angew

+0

謝謝,我已經設法得到兩個立方體,一個繞着它的x軸旋轉,另一個繞着第一個立方體旋轉,還有一些人認爲我不太明白,但是你的回答非常有幫助,而且很容易理解 – Jan