Tôi đang cố gắng hiểu hệ thống tọa độ OpenGL. Ở khắp mọi nơi tôi thấy nó được mô tả như một tay phải, nhưng nó không tương ứng với kinh nghiệm của tôi. Tôi đã cố gắng vẽ một số hình dạng và các đối tượng 3 chiều và tôi thấy rằng các điểm z trục rõ ràng "vào màn hình" (trong khi x trỏ sang phải và y lên - đó là mô tả hệ tọa độ thuận tay trái). Tôi đang thiếu gì?Trường hợp điểm trục OpenGL z?
chỉnh sửa: Ví dụ:
http://img576.imageshack.us/img576/9234/triangles.jpg
Nếu + điểm Z xem, tại sao tam giác màu xanh lá cây, mà z-tọa độ là lớn hơn, là đằng sau một màu đỏ?
initializeGL:
qglClearColor(Qt::darkGray);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_COLOR);
resizeGL:
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-50.0f, 50.0f, -50.0f, 50.0f, 50.0, -50.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
paintGL:
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef (-30.0, 1.0, 0.0, 0.0);
glRotatef (20.0, 0.0, 1.0, 0.0);
glColor3f(1.0, 0.0, 0.0);
glBegin(GL_LINES);
glVertex3f(45.0, 0.0, 0.0);
glVertex3f(-45.0, 0.0, 0.0);
glVertex3f(0.0, 45.0, 0.0);
glVertex3f(0.0, -45.0, 0.0);
glVertex3f(0.0, 0.0, 45.0);
glVertex3f(0.0, 0.0, -45.0);
glEnd();
glBegin(GL_TRIANGLES);
//Red triangle:
glColor3f(1.0, 0.0, 0.0);
glVertex3f(0.0, 0.0, 1.0);
glVertex3f(0.0, 20.0, 1.0);
glVertex3f(20.0, 0.0, 1.0);
//Green triangle:
glColor3f(0.0, 1.0, 0.0);
glVertex3f(-15.0, 0.0, 20.0);
glVertex3f(0.0, 25.0, 20.0);
glVertex3f(15.0, 0.0, 20.0);
glEnd();
"Nếu + Z chỉ người xem, tại sao tam giác màu xanh lục, tọa độ z lớn hơn, phía sau màu đỏ?" Bạn đã xoay toàn bộ cảnh hai lần. Gọi glLoadIdentity cho ma trận chế độ xem mô hình trước khi hiển thị tam giác, sau đó so sánh kết quả. – SigTerm