2010-12-11 77 views
2

右圖想象你的0,1,0甚至是立方體。然後旋轉45%(glRotatef),然後向前移動該對象(glTranslate 0,0,10),以便向前移動該對象10。OpenGl:找出你的當前位置

那你如何得到那個物體的位置?

回答

3

您可以將轉換組合到一個矩陣中,然後將其應用於任何點以爲您提供其世界位置。您可以通過查詢當前矩陣(應用所有旋轉,平移和縮放後)並使用它將變換應用於任意點來完成此操作。

請注意,通過使用glRotatef和glTranslatef`,您正在使用即時模式和舊式API。使用現代OpenGL的用法可以創建矩陣並將它們發送給着色器,以便將從對象到世界座標的變換應用。通過這種方式,您將擁有用於對象到世界轉換的矩陣。

+0

不要假設你知道命令,我使用的是openGL ES 1.1 – Burf2000 2010-12-12 00:04:29

+1

你可以使用:'float modelViewMatrix [16]; glGetFloatv(GL_MODELVIEW_MATRIX,modelViewMatrix);'查詢當前的變換。然後,您可以將此矩陣應用於模型空間中的任意點以獲取世界座標。 – gavinb 2010-12-12 04:16:56

+0

如果你可以幫我完成下一步。我該如何應用它? – Burf2000 2010-12-13 14:57:36

3

看起來你想使用GLu庫中的gluProject函數(附帶OpenGL)。

+0

我的項目有它,但我不知道爲什麼我需要它 – Burf2000 2010-12-12 00:03:13

+1

它可以爲你做一些工作。事實上,你並不需要*來使用它 - 在你的特定情況下,用'GL_MODELVIEW_MATRIX'作爲參數調用'glGetDoublev'並將你的位置乘以這個矩陣就足夠了。 – Kos 2010-12-12 00:12:33

+0

我該怎麼做,我得到了矩陣,看看它,但我如何乘以我的位置呢? – Burf2000 2010-12-13 14:56:24