ios - 触摸对象GLKIT或OpenGL有什么功能?

标签 ios opengl-es glkit

我正在寻找触摸我的OpenGL对象的描述,或者如果我触摸它,则会得到一个事件。
GLKit或OpenGL ES可以使用某些功能吗?
还是我必须计算对象的位置并将其与我的Touch的坐标进行比较?

最佳答案

没有内置函数,但是这是gluProject函数的移植版本,它将在屏幕坐标中放置来自对象的一个​​点,因此您可以查看触摸是否在该点附近:

GLKVector3 gluProject(GLKVector3 position, 
                  GLKMatrix4 projMatrix,
                  GLKMatrix4 modelMatrix,
                  CGRect viewport
                  )
{
GLKVector4 in;
GLKVector4 out;

in = GLKVector4Make(position.x, position.y, position.z, 1.0);

out = GLKMatrix4MultiplyVector4(modelMatrix, in);
in = GLKMatrix4MultiplyVector4(projMatrix, out);

if (in.w == 0.0) NSLog(@"W = 0 in project function\n");
in.x /= in.w;
in.y /= in.w;
in.z /= in.w;
/* Map x, y and z to range 0-1 */
in.x = in.x * 0.5 + 0.5;
in.y = in.y * 0.5 + 0.5;
in.z = in.z * 0.5 + 0.5;

/* Map x,y to viewport */
in.x = in.x * (viewport.size.width) + viewport.origin.x;
in.y = in.y * (viewport.size.height) + viewport.origin.y;

return GLKVector3Make(in.x, in.y, in.z);

}

- (GLKVector2) getScreenCoordOfPoint {

GLKVector3 out = gluProject(self.point, modelMatrix, projMatrix, view.frame);

GLKVector2 point = GLKVector2Make(out.x, view.frame.size.height - out.y);

return point;
}

关于ios - 触摸对象GLKIT或OpenGL有什么功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880489/

相关文章:

c# - glBufferData 总是因 GL_INVALID_ENUM 而失败,即使它不应该

android - 如何恢复 Android OpenGL native 应用程序

ios - OpenGL ES 2.0 绘制不显示任何内容的简单三角形

swift - OpenGL ES 透明度不起作用,而是与背景融为一体

ios - 这是什么意思 Apple 实现已被弃用,但仍然可以使用它。不使用它的原因?

ios - Pod Spec Lint CoreSimulator 检测到 Xcode.app 重定位或 CoreSimulatorService 版本更改

ios - 为什么更新 CALayer 会导致 CPU 使用率(其他进程)增加 60-70%?

iOS - 没有滑动背景图像的pushViewController

ios - iPhone 项目在启动时崩溃

c++ - Android NDK OpenGL ES 1.0 简单渲染