Tôi đang làm việc trên ứng dụng OpenGL ES1 hiển thị lưới 2D và cho phép người dùng điều hướng và chia tỷ lệ/xoay vòng. Tôi cần phải biết chính xác bản dịch của View Touch tọa độ vào thế giới opengl của tôi và ô lưới. Có người giúp đỡ nào để làm ngược lại vài biến đổi cuối cùng mà tôi làm để điều hướng không? hoặc tôi nên tính toán và làm những thứ ma trận bằng tay?iPhone OpenGL ES - Cách chọn
Trả lời
Chế độ chọn không khả dụng trong ES OpenGL. Nhưng thật dễ dàng để tính tọa độ màn hình của bất kỳ điểm 3d nào bằng ma trận chiếu được lấy từ trạng thái OpenGL hiện tại. Sau đây là cách tôi làm điều đó (IMPoint2D và IMPoint3D là cơ bản (x, y) và (x, y, z) cấu trúc)
+ (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};
}
Âm thanh như những gì bạn đang tìm kiếm là một phương pháp unproject. Các thư viện glut đi kèm với một, nhưng nó không có sẵn trên OpenGL ES. Có thể rewrite the glut code yourself to be iphone compatible Bạn cũng có thể viết mã của riêng mình để không dự án, có liên quan đến việc cần phải mở rộng điểm tiếp xúc với chế độ xem của bạn, nhân nó với nghịch đảo của ma trận chiếu * modelview và chia cho w để lấy vector 3D.
Có thể thực hiện việc này với GL_MODELVIEW_MATRIX? hoặc GL_MODLVIEW, tôi không sửa đổi vị trí xem, chỉ del modelview. Tôi đang làm điều này:
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);
nhờ
- 1. OpenGL ES cho Iphone
- 2. Chọn OpenGL ES 1.1 hoặc OpenGL ES 2.0?
- 3. OpenGL ES 1.1 hoặc 2.0 trên iPhone
- 4. glGetUniformLocation trở -1 OpenGL ES (iPhone)
- 5. Bảng trò chơi trên iPhone: OpenGL ES hoặc CoreGraphics?
- 6. khác biệt trong iOS OpenGL ES và Android OpenGL ES
- 7. iPad hoặc iPhone có hỗ trợ OpenGL ES 2.0 không?
- 8. Kết cấu toàn màn hình iPhone OpenGL ES
- 9. OpenGL ES Render to Texture
- 10. OpenGL ES 1.x Shaders
- 11. OpenGL ES và OpenGL shaders tương thích
- 12. OpenGL-ES và Cg
- 13. Cách viết lại ứng dụng OpenGL 2D cho OpenGL ES?
- 14. Tương thích ngược OpenGL với OpenGL ES?
- 15. OpenGL ES 2.0 tương đương với glOrtho()?
- 16. Cách tải và hiển thị hình ảnh trong OpenGL ES cho iphone
- 17. Làm cách nào để triển khai hoàn tác trong ứng dụng vẽ OpenGL ES trên iPhone?
- 18. Cách hiển thị bàn phím iPhone/iPad trên toàn màn hình Ứng dụng OpenGL ES
- 19. chuyển view Tuỳ chỉnh trong OpenGL ES
- 20. Hướng dẫn viết mã OpenGL và OpenGL ES tương thích?
- 21. Sương mù OpenGL so với sương mù OpenGL ES
- 22. Android openGL ES glDrawArrays hoặc glDrawElements?
- 23. Vẽ hình cầu trong OpenGL ES
- 24. Android OpenGL ES GL10 hoặc GL11
- 25. OpenGL es 2.0 Đọc bộ đệm sâu
- 26. Android Opengl ES: GLUtils.glTexImage2D gây GL_INVALID_ENUM
- 27. Kết cấu in trong OpenGL ES 2.0
- 28. Clipping-planes trong OpenGL ES 2.0
- 29. Kênh alpha alpha OpenGL ES 2.0
- 30. Android OpenGL - ES Texture chảy máu
tôi đã thêm chức năng - (CGPoint) getScreenCoorOfPoint: (IMPoint3D) _point3D mà dường như để cho tôi vị trí mục của tôi trên thế giới nhưng các bit bây giờ tôi bị mắc kẹt trên là: * tôi có các đối tượng có một vị trí * tôi có vị trí của tôi trên thế giới (gluLookAt mắt [0], mắt [1], mắt [2]) * và sau đó tôi có nơi tôi khai thác trên s creen Làm cách nào để tham gia tất cả điều này, đó là điều cuối cùng trong cách tôi lưu trữ sự vĩ đại !!!! – Burf2000