2011-06-29 162 views
0

我在OpenGLES 2.0中製作了一個ipad應用程序,並且我有一些應該能夠使用觸摸事件進行翻譯的對象。所以我需要對應於屏幕(X,Y,Z)座標的(x,y,z)對象座標。我能得到這個tutotial在線:將屏幕座標轉換爲對象座標在Ipad上的OpenGL ES 2.0

http://softwareprodigy.blogspot.com/2009/08/gluunproject-for-iphone-opengl-es.html

但問題是,因爲我對OpenGL ES 2.0的工作,我有我自己的投影,模型和攝像頭矩陣我傳遞到頂點着色器。 首先,我需要視口矩陣(我提到使用內置函數glViewPort()的視口),我怎樣才能得到它?其次,我無法得到所描述的與飛機相交的過程嗎? 有人可以解釋它或提供一個替代方法?


好,我從上面想通了一切,它的工作,現在我有一個新的問題:P

我能夠獲得(X,Y)對象的座標,並能得到z座標太基於射線的交點。 但是,當我翻譯或旋轉我的對象時,我的模型矩陣發生了變化,這導致了對象座標的變化,但我知道僅用於繪製對象的初始座標(所以我無法確定該對象是否被射線是正確的)。

有什麼辦法可以跟蹤我的對象座標? 一種方法是將相同的變換應用到對象的中心點並保持其值,但這隻適用於球形(對稱對象)。有任何想法嗎???

+0

我知道了所有的工作,其實我明白這一切了。我反轉投影和模型矩陣,所以我不需要關心任何轉換..我想這個問題現在可以刪除 – codingBuddha

+0

你能解釋給我嗎?如何將屏幕座標轉換爲opengl? – SAKrisT

回答

1

OpenGL中沒有視口矩陣,只有視口參數與傳遞給glViewport的視口參數相同。你可以讓他們使用glGetIntegerv與GL_VIEWPORT爲PNAME:

GL_VIEWPORT PARAMS返回四個值: 的 X 和 y中的視口的 窗口座標, 其次是它的寬度和高度。 最初 X 和 ÿ 窗口座標都被設置爲0,和 的寬度和高度被設置爲寬度和窗口的高度成 其中GL將盡其渲染。 請參閱glViewport。

glGet OpenGL ES 2.0 man page

+0

ya謝謝,我能夠在短短的幾分鐘後回來,問題仍然存在,其餘部分 – codingBuddha

相關問題