目前我正在使用OpenGL ES 2.0繪製一個包含引腳的對象並將其顯示在CAEAGLLayer上。我能夠通過顏色選擇識別對象。 現在我需要計算引腳世界座標的屏幕座標,以便在正確的位置繪製標籤(我想使用可可觸摸組件)。什麼是計算屏幕座標的正確方法(隱藏的對象應該被忽略)? 貫穿整個圖像並使用每個像素對其執行顏色拾取聽起來並不像正確的方式。OpenGL ES 2.0 Overlay的頂點位置
在此先感謝。
目前我正在使用OpenGL ES 2.0繪製一個包含引腳的對象並將其顯示在CAEAGLLayer上。我能夠通過顏色選擇識別對象。 現在我需要計算引腳世界座標的屏幕座標,以便在正確的位置繪製標籤(我想使用可可觸摸組件)。什麼是計算屏幕座標的正確方法(隱藏的對象應該被忽略)? 貫穿整個圖像並使用每個像素對其執行顏色拾取聽起來並不像正確的方式。OpenGL ES 2.0 Overlay的頂點位置
在此先感謝。
蘋果提供了自己的GL數學函數的味道: 見GLKMathUtils documentation。
正如盧卡斯指出的那樣,你可以用它來預測(世界 - >屏幕座標)或取消項目(屏幕 - >世界座標)
所以,如果你已經使用GLKit您的矩陣變換,你可以使用這個:
GLKVector3 screenPoint = GLKMathProject(modelPoint, modelViewMatrix, projectionMatrix, viewport);
我自己可以回答這個問題。在某些版本的OpenGL上,glProject()可用,可用於計算屏幕上頂點的位置。不幸的是這個功能是不是在OpenGL ES 2.0中可用,所以你必須自己計算或者你使用數學庫像OpenGL Mathematics它提供了一個功能glProject():
#include "matrix_transform.hpp"
#include "transform.hpp"
vec3 pinScreenPosition = glm::project(vec3(0,0,0), modelMatrix, projectionMatrix, vec4(0, 0, screenDimensions.x * screenScale, screenDimensions.y * screenScale));
感謝您的提示。但是我試圖儘可能保持平臺獨立,因爲代碼可能需要移植到非蘋果平臺上 – Lukas