Nhưng tại sao lại sử dụng hệ tọa độ thuận tay trái?
Hãy thêm "theo mặc định" vào câu hỏi đó. Bởi vì tất cả những gì cần thiết để thay đổi nó là glDepthRange(1.0f, 0.0f);
và bây giờ bạn đã thuận tay phải. Và vâng, đó là cú pháp GL hoàn toàn hợp pháp; chưa bao giờ có giới hạn rằng phạm vi gần z nhỏ hơn phạm vi xa z.
Tại sao nó thuận tay trái theo mặc định? Có lẽ ai đó trên ARB thích nó theo cách đó. Có thể ai đó trên ARB thích tăng độ sâu thay vì giảm, và hướng góc dưới bên trái làm cho điều đó là cần thiết. Có lẽ bởi vì tiền thân của OpenGL, IRIX GL, đã làm theo cách này và ARB không thấy cần phải thay đổi nó.
Lý do cho điều này là không quan trọng; sự thuận tiện hoàn toàn là một sự thuận tiện phi lý. Ở một số nơi, thuận tay phải có ý nghĩa. Ở những người khác, thuận tay trái có ý nghĩa. Và kể từ khi nó được thay đổi tầm thường, chỉ cần sử dụng những gì làm việc cho bạn.
Sau đó, nó sẽ phù hợp với mọi thứ khác.
Nhất quán với điều gì khác là mọi thứ khác? Tất cả các công cụ chức năng cố định đã bị xóa?
Biến đổi khung nhìn tất cả được thực hiện bởi OpenGL trong nội bộ, nơi không ai có thể nhận được nó. Bạn thậm chí không cung cấp ma trận; bạn chỉ cung cấp chế độ xem và phạm vi chiều sâu. Vì vậy, từ quan điểm của một người sử dụng GL cố định chức năng, tất cả mọi thứ thực sự là thuận tay phải.
Thời gian duy nhất mà tay cầm thậm chí còn xuất hiện là khi giao dịch trực tiếp với các trình đổ bóng đỉnh, nơi bạn phải biết được độ nhạy của không gian clip là gì. Và trong trường hợp đó, sự thay đổi trong tay là một chức năng đơn giản của phép chiếu phối cảnh phủ nhận Z. Hoặc, nếu bạn thích tọa độ thuận tay trái, phép chiếu phối cảnh không phủ nhận Z. Hoặc một lần nữa, chỉ cần đảo ngược glDepthRange
và bây giờ bạn thuận tay phải.
Nguồn
2012-02-21 21:35:01
Tôi không hiểu làm thế nào một nguồn gốc trung tâm có nghĩa là nó là "thuận tay trái" ... –
Tôi không bao giờ ngụ ý điều đó. Xem tại đây: http://www.songho.ca/opengl/gl_projectionmatrix.html Đọc lại câu hỏi của tôi. –
Tại sao hệ thống thuận tay phải lại tốt hơn? – cmannett85