OpenGL ES 2.0 顶点位置用于叠加



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

提前谢谢。

Apple 提供了自己风格的 GL 数学函数:请参阅 GLKMathUtils 文档。

正如卢卡斯指出的那样,您可以使用它来投影(世界 -> 屏幕坐标(或取消投影(屏幕 -> 世界坐标(

因此,如果您已经在使用 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));

最新更新