Đặt ma trận chiếu phối cảnh trong Open GL (bao gồm OpenGL ES 2.0) có định dạng chung sau:
glm::mat4 perspective(float fovy, float aspect, float zNear, float zFar);
Lưu ý hai tham số cuối cùng ; Đầu tiên chỉ định mặt phẳng zNear , là mặt phẳng gần camera hơn. Cái thứ hai chỉ định mặt phẳng zFar ở xa camera.
Một kiến thức phổ biến là, trong OpenGL, những thứ xa hơn, nói cách khác là "sâu hơn vào màn hình", có trục Z âm . Tại sao sau đó tất cả các ví dụ OpenGL, đặt ma trận chiếu phối cảnh (được lấy từ các nguồn đáng tin cậy như OpenGL SuperBible và simmilar) trông giống như hai tham số được đề cập ở trên (zNear, zFar) của chức năng chiếu phối cảnh được hoán đổi?
Ví dụ này được lấy từ webiste GLM (OpenGL Math) :
glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.f);
Bạn có thể thấy rằng tham số zNear thực sự nằm xa camera hơn so với tham số zFar, gần hơn 100 điểm so với camera / trình xem.
Bạn có thể cung cấp giải thích dễ hiểu , xin vui lòng? Tôi không chỉ là một mà là tất cả các ví dụ, vượt qua zFar với giá trị dương cao hơn zNear. Cảm ơn.
Ví dụ của tôi:
Trong mã của tôi, khi tôi đặt:
glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 1000.0f, -500.0f);
Tôi giả sử sự thất vọng của tôi là 1000 điểm theo hướng z dương và 500 điểm theo hướng âm z .
Khi tôi đặt những thứ như thế này, tôi có thể thấy ít nhất một số đối tượng, mặc dù mọi thứ không hoàn hảo: vì một số lý do tôi chỉ thấy các đối tượng được định vị trên tọa độ z âm.
Điều này có thể liên quan đến sự hiểu biết không chính xác của tôi về chức năng chiếu phối cảnh.