我正在研究OpenGL ES1应用程序,该应用程序显示2D网格并允许用户导航和缩放/旋转它。我需要知道View Touch坐标到我的opengl世界和网格单元的确切翻译。有没有任何助手可以完成我为导航所做的最后几个变换的反转?或者我应该用手来计算和做矩阵的东西?iPhone OpenGL ES - 如何选择
6
A
回答
4
挑选模式在openGL ES中不可用。但使用从当前openGL状态检索到的投影矩阵很容易计算任意3d点的屏幕坐标。 这里是我如何做到这一点(IMPoint2D和IMPoint3D是基本的(X,Y)和(X,Y,Z)结构)
+ (IMPoint2D) getScreenCoorOfPoint:(IMPoint3D)_point3D
{
GLfloat p[16]; // Where The 16 Doubles Of The Projection Matrix Are To Be Stored
glGetFloatv(GL_PROJECTION_MATRIX, p); // Retrieve The Projection Matrix
/*
Multiply M * point
*/
GLfloat _p[] = {p[0]*_point3D.x +p[4]*_point3D.y +p[8]*_point3D.z + p[12],
p[1]*_point3D.x +p[5]*_point3D.y +p[9]*_point3D.z + p[13],
p[2]*_point3D.x +p[6]*_point3D.y +p[10]*_point3D.z+ p[14],
p[3]*_point3D.x +p[7]*_point3D.y +p[11]*_point3D.z+ p[15]};
/*
divide by scale factor
*/
IMPoint2D _p2D = {_p[0]/_p[3], _p[1]/_p[3]};
/*
get result in screen coordinates. In this case I'm in landscape mode
*/
return (IMPoint2D) {_p2D.x*240.0f + 240.0f, (1.0f - _p2D.y) *160.0f};
}
6
听起来你正在寻找什么是unproject方法。 glut库有一个,但它在OpenGL ES上不可用。这是可能的rewrite the glut code yourself to be iphone compatible 你也可以编写你自己的代码来进行unproject,这将涉及到需要将接触点缩放到视口,将其乘以投影* modelview矩阵的逆,并用w除以得到3D矢量。
0
可以用GL_MODELVIEW_MATRIX做到这一点吗?或GL_MODLVIEW,我不修改视图位置,只有del modelview。 I'm这样做:
glMatrixMode(GL_MODELVIEW);
// Setup model view matrix
glLoadIdentity();
[gAccel GetAccelerometerMatrix:(GLfloat *) matrix headingX:headx headingY: heady headingZ:headz];
// Finally load matrix
glLoadMatrixf((GLfloat*)matrix);
glPushMatrix();
glRotatef(-90, 1, 0, 0);
glScalef(0.0005, 0.0005, 0.0005);
glTranslatef(x, 0.0, z);
感谢
相关问题
- 1. iPhone OpenGL ES
- 2. OpenGL ES For iPhone
- 3. iPhone OpenGL ES Texture2D Masking
- 4. OpenGL ES iPhone纹理
- 5. iPhone的OpenGL-ES:在OpenGL UISwipeGestureRecognizer
- 6. Fullscreen texture iPhone OpenGL ES
- 7. Iphone opengl es - glu,glPushName
- 8. OpenGL ES的问题(iPhone)
- 9. 如何在OpenGL ES中选择一个对象?
- 10. 如何正确使用glMultMatrix - iPhone - OpenGL ES
- 11. 橡皮擦在OpenGL ES iphone
- 12. iPhone的OpenGL-ES:从移动
- 13. OpenGl ES iPhone,奇怪的行
- 14. OpenGL或OpenGL ES
- 15. OpenGL到OpenGL-ES - glRectf()
- 16. 在iPhone上的OpenGL ES颜色采摘
- 17. 从OpenGL ES 1.1过渡到OpenGL ES 2.0
- 18. OpenGL ES单元
- 19. iPhone:Quartz2d与OpenGL ES
- 20. Qt + OpenGL ES + N900
- 21. iPad或iPhone支持OpenGL ES 2.0吗?
- 22. iPhone OpenGL ES 2.0 - 像素完美纹理
- 23. OpenGL ES的iPhone - 绘制反锯齿线
- 24. 在iPhone的OpenGL ES中纹理球体
- 25. OpenGL ES iPhone从IB切换到initWithFrame
- 26. Opengl es高分辨率iphone 4
- 27. iPhone OpenGL ES Paint App刷机效果
- 28. 为iPhone制作PNG文件OpenGL ES
- 29. 移植的DirectX的OpenGL ES(iPhone)
- 30. 在OpenGL ES中请求DepthBuffer for iPhone
我添加了功能 - (CGPoint)getScreenCoorOfPoint:(IMPoint3D)_point3D这似乎给我的项目位置在世界上可是一点我现在卡住上是: * 我有有一个位置的对象 * 我有在世界位置(gluLookAt眼[0],眼[1],眼[2]) * 然后我有我在哪里点击s creen 我该如何加入这一切,这是我存档伟大的最后一件事! – Burf2000 2010-12-05 18:43:03