2013-10-08 115 views
0

目前我正在使用OpenGL ES 2.0绘制一个包含引脚的对象并将其显示在CAEAGLLayer上。我能够通过颜色选择识别对象。 现在我需要计算引脚世界坐标的屏幕坐标,以便在正确的位置绘制标签(我想使用可可触摸组件)。什么是计算屏幕坐标的正确方法(隐藏的对象应该被忽略)? 贯穿整个图像并使用每个像素对其执行颜色拾取听起来并不像正确的方式。OpenGL ES 2.0 Overlay的顶点位置

在此先感谢。

回答

1

苹果提供了自己的GL数学函数的味道: 见GLKMathUtils documentation

正如卢卡斯指出的那样,你可以用它来预测(世界 - >屏幕坐标)或取消项目(屏幕 - >世界坐标)

所以,如果你已经使用GLKit您的矩阵变换,你可以使用这个:

GLKVector3 screenPoint = GLKMathProject(modelPoint, modelViewMatrix, projectionMatrix, viewport); 
+0

感谢您的提示。但是我试图尽可能保持平台独立,因为代码可能需要移植到非苹果平台上 – Lukas

0

我自己可以回答这个问题。在某些版本的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));