0
我想模擬使用牛頓物理和OpenGL的旋轉框。這是我實施的。如何更新變換矩陣(NewtonGameDyanmics/OpenGL)?
float mat44[16] = {
1,0,0,0,
0,1,0,0,
0,0,1,0,
0,0,0,1
};
box.mat = &mat44[0];
box.x_size = 0.50;
box.y_size = 0.50;
box.z_size = 0.50;
nWorld = NewtonCreate(NULL, NULL);
NewtonCollision * collision = NULL;
collision = NewtonCreateBox(nWorld, box.x_size, box.y_size, box.z_size,NULL);
body = NewtonCreateBody(nWorld, collision);
NewtonReleaseCollision (nWorld, collision);
NewtonBodySetMassMatrix(body, 10.0, 2.0, 2.0, 2.0);
NewtonBodySetMatrix (body, box.mat);
float omega[3] = {0.0f, 10.0f, 0.0f};
NewtonBodySetOmega (body, &omega[0]);
在渲染循環內我正在做這些事情。
NewtonUpdate(nWorld, time);
float m[16];
NewtonBodyGetMatrix(body, &m[0]);
box.mat = m;
我的問題是如何使用矩陣(box.mat)繪製一個立方體(實際上8點)?我怎樣才能使用矩陣計算更新的頂點?
請讓我知道如何做到這一點的第二部分(飼料的OpenGL不變的頂點和簡單的使用box.mat爲「模型矩陣」的OpenGL)? – shan 2012-03-24 04:22:50
假設當前的矩陣堆棧是'GL_MODELVIEW',並且該堆棧上的當前矩陣是您的視圖矩陣,那麼您可以調用'glMultTransposeMatrixf(box.mat)'。這假定你正在使用行主矩陣,這與我在實際答案中編寫代碼的假設是一樣的。 – 2012-03-24 04:24:27
不,你不需要轉置牛頓矩陣將其傳遞給OpenGL。只需調用glMultMatrixf(m);如果m是從NewtonBodyGetMatrix函數獲得的矩陣。 – 2012-03-24 09:37:27