2015-10-07 99 views
0

我想使用剪刀測試,但不幸的是剪刀以像素(int)表示,而不是在opengl世界座標(-1.0000 1.0000)中表示。OpenGL座標和剪刀座標

有人可以告訴我如何將從世界座標轉換爲int x y像素的方式嗎?

回答

0

剪刀測試是在屏幕座標,因爲它是一個光柵操作。您可以通過將世界座標乘以MVP矩陣(獲得-1,1範圍,然後將其映射到像素)來將世界座標轉換爲屏幕空間,但是這不會允許您剪裁除生成的屏幕空間矩形之外的其他任何東西(這會始終軸對齊)。因此用世界空間座標進行剪刀測試沒有多大意義。

也許告訴我們你想用剪刀測試解決什麼問題,我們可以找到更合適的解決方案。

+0

你好Kornel。 我想使用剪刀測試的GUI目的: 繪製一個窗口內部的東西,不會輸出到屏幕的其餘部分 矩形aera很適合我。 我很熟悉opengl,所以具體的代碼會有很大的幫助! 我的應用程序僅在-1 +1世界座標 謝謝 – christoph

+0

對於GUI來說,使用屏幕空間座標會容易得多。精確的代碼取決於流水線(固定/着色器)以及前者,您使用的數學庫。 –

+0

那麼,對於屏幕座標,我寧願留在opengl空間座標,以使相同的比例和地點,但是用戶屏幕size.I m使用glew.h GL/glu.h glfw glut.h glm/glm.hpp和maths_funcs .cpp這是來自一本書:[鏈接] http://antongerdelan.net/opengl/ – christoph