2011-05-13 75 views

回答

2

實施gluProject()

編輯:Mesa/SGI有some code

編輯2:或者抓取GLU for iOS的副本。

+0

是不是有一個「更簡單的方法」? – marcg11 2011-05-13 18:43:30

+0

@ marcg11:編輯。這幾乎是最簡單的方法。 – genpfault 2011-05-13 21:33:42

+0

嘿,非常感謝,我將其標記爲answererd。 – marcg11 2011-05-14 12:53:21

1

只需實現OpenGL管線的轉換:modelview,projection,perspective devide,viewport。用glGetDoublev和glGetIntegerv查看當前矩陣。

然後,您必須計算投影矩陣時間modelview矩陣= MVP。

現在對於每個頂點v計算MVP * v。

然後計算v/= v.w;

因此,你得到範圍[-1,1] x [-1,1]中的座標,最後一件事是縮放並將其轉換爲[x,x + w] x [y,y + h](其中是視口的值)。

你也可以看看glFrustum,glViewport的OpenGL參考信息頁面,看看所有這些轉換是如何完成的。

+0

哇哈哈,我不知道那麼多openGLES。所以funcion gluproject是不是implmeneted?謝謝btw。 – marcg11 2011-05-13 20:41:37

+0

我不知道,我只有桌面GL的經驗,其中gluProject實施。如果它在那裏,你可以使用它(它實際上就是我寫的)。但是,也許genpfault與gluProject的鏈接爲您提供了一個比我的答案更好的解釋。有了這些解釋,你應該很容易實現自己。 – 2011-05-13 20:45:25

+0

我會看看。我不知道有多少桌面opengl與iPhone的openglES不同。 – marcg11 2011-05-13 21:53:24