2012-05-21 111 views
0

我的問題是:檢索頂點座標

有沒有辦法在翻譯或旋轉後檢索頂點的座標?

例如:X = 10,Y = 10,z = 0的

一系列調用glTranslate或glRotate後我怎樣才能知道的x,y和z中的實際狀態?

謝謝。

+0

可能重複的[openGL:得到座標後glrotate](http://stackoverflow.com/questions/10543554/opengl-get-coordinates-after-a-glrotate) – CharlesB

回答

3

這是不可能的...... opengl將您的頂點數據發送到GPU,並且只有在GPU上,您可以在轉換後獲取它們。

得到變換的頂點必須由矩陣對自己

for each vertex: 
    vertex_transformed = matrix * vertex 
老的Op​​enGL

乘他們:

glGetFloatv(GL_MODELVIEW_MATRIX, m); 
x = pos.x*m[0] + pos.y*m[4] + pos.z*m[8] + m[12]; 
y = pos.x*m[1] + pos.y*m[5] + pos.z*m[9] + m[13]; 
z = pos.x*m[2] + pos.y*m[6] + pos.z*m[10] + m[14]; 

一些更高級的方法是使用變換反饋和存儲這些轉化頂點放入緩衝區(但這個緩衝區仍將存儲在GPU上)。

+0

好但是..我怎麼能檢索矩陣,轉換後,使用gl方法?和..矩陣(float [16])和頂點相乘的算術是什麼? ...對於變換反饋,我如何創建這個緩衝區來存儲進度? – James

+0

非常感謝你! – James

+0

沒問題:)變換反饋有點高級......我需要更多的經驗,所以我現在無法向你解釋。 – fen