Nếu bạn đang sử dụng OpenGL, phần 9 Câu hỏi thường gặp về OpenGL: Các biến đổi bao gồm chính xác cách thực hiện việc này. Và không, nó không liên quan đến raytracing, vì đó là cách rất không hiệu quả (nhưng chất lượng cao) để thực hiện điều này.
9.170 Làm cách nào để kết xuất gương?
Đây là những gì mục nhập FAQ nói và mã ví dụ minh họa:
- Thiết lập một ma trận xem phản ánh. Làm điều này cho các gương căn chỉnh trục được giải thích trong đoạn thứ hai.
- Vẽ cảnh
- Khôi phục ma trận xem và xóa bộ đệm sâu
- Kết xuất cảnh một lần nữa; hình học gương thực tế trong cảnh này phải mờ hoặc hoàn toàn trong suốt, để hiển thị thông qua cảnh được nhân đôi trước đó.
Rõ ràng là có rất nhiều chỗ để tối ưu hóa. Khi hiển thị cảnh được phản chiếu, có lẽ bạn nên loại bỏ càng nhiều càng tốt, vì gương thường nhỏ và việc loại bỏ màn hình mặc định sẽ không ảnh hưởng đến hình học trên màn hình nhưng không nhìn thấy qua gương. Bạn cũng có thể chỉ hiển thị một phiên bản đơn giản của cảnh qua gương. Đối với các hiệu ứng và để che khuất người dùng nhận thấy chất lượng giảm, bạn có thể áp dụng trình đổ bóng (ví dụ: làm mờ hoặc có thể sáng / rửa sạch) khi bạn thực hiện kết xuất được nhân đôi.
Tôi tưởng tượng, nếu bạn đang sử dụng DirectX, quy trình sẽ giống như vậy.