【发布时间】:2014-05-05 20:23:52
【问题描述】:
我已经使用 GLKMathUnProject 来实现光线拾取,这样我就可以触摸 3D 空间中的对象。现在我想做的是(例如)在该对象上方显示一个标签。所以我需要将 3D 空间转换为 2D 屏幕线(我知道使用 OpenGl 和 UIKit 是一个坏主意,并且已经实现了文本到纹理)。
我在下面使用了以下方法,但是我认为我遗漏了一些东西。我在 iPad 上,该项目在我面前,老实说不知道如何处理 z。:
{922.111, 763.055, 0.990884}
GLKVector3 x = GLKMathProject(building.position, _baseModelViewMatrix, _projectionMatrix, viewport);
NSLog(@"%@", NSStringFromGLKVector3(x));
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(x.x, x.y, 50, 20)];
label.text = @"TEST";
[self.view addSubview:label];
【问题讨论】:
-
有什么问题?对于视网膜显示器,您可能需要将这些坐标除以 2.0。 Z坐标对您的情况没用。顺便说一句,混合 OpenGL 和 UIKit 绝非坏主意。
-
哦,好吧,它是视网膜,可以在 3d 上方显示标签,例如名称和东西(动态)发短信似乎有点过头了
-
请在修复后作为解决方案发布
标签: ios opengl-es-2.0 glkit