Làm cách nào để kết xuất cổng trong OpenGL?


7

Tôi đang làm RPG trong OpenGl và tôi cần tạo một số cổng. Tôi nên kết xuất nó như thế nào nếu tôi muốn xem qua cổng bên kia?


Trò chơi của bạn là 2D hay 3D? Chính xác ý bạn là gì bởi một "cổng thông tin"?
Anko

Nó là 3D. Theo cổng thông tin tôi có nghĩa là một cái gì đó giống như liên kết
Vlastimil Blažek

Câu trả lời:


6

Bạn có hai cảnh được hiển thị từ hai phối cảnh camera: một trong không gian cục bộ và một trong không gian cổng thông tin. Bạn cần chồng một phần của cái sau lên cái trước. Bạn cần có kiến ​​thức làm việc về bộ đệm G ( bóng mờ hoãn lại ) để đạt được điều này, vì vậy tôi khuyên bạn nên bắt đầu nghiên cứu của mình ở đó.

Shader pass đầu tiên : Xây dựng bộ đệm G cho cảnh cục bộ của bạn. Trong trường hợp cụ thể của bạn, bạn sẽ có một bộ đệm màu dành riêng để che giấu hình bóng của cổng thông tin từ góc độ địa phương; nó sẽ chứa một màu (nói màu trắng) biểu thị bề mặt cổng thông tin của bạn, với mọi thứ khác trong không gian cục bộ được hiển thị màu đen. Mặt nạ này được sử dụng để bạn biết những pixel nào trong cảnh cục bộ được hiển thị của bạn sẽ được coi là một cửa sổ vào "không gian cổng thông tin".

Shader pass thứ hai : Hiển thị cảnh không gian cổng thông tin của bạn với cùng hướng camera, nhưng vị trí camera được dịch chuyển bởi cùng một vectơ mô tả phần bù của camera từ cổng trong không gian cục bộ.

Vượt qua shader thứ ba / cuối cùng : Sử dụng mặt nạ để cắt bỏ phần của cảnh cổng thông tin mà bạn cần siêu áp đặt trên bề mặt cổng thông tin trong cảnh cục bộ và siêu áp đặt trong shader mảnh.

TUYÊN BỐ TỪ CHỐI Điều này nói dễ hơn làm - tham gia kết xuất nhiều lượt và bộ đệm g là một công việc đáng kể nếu bạn chưa từng làm việc đó trước đây - mong đợi vài ngày dài đến vài tuần tùy thuộc vào mức độ kỹ năng của bạn, thời gian khả dụng và may mắn chung trong quá trình thực hiện. Ngoài ra, hãy hiểu rằng bóng mờ trả chậm có chi phí cao và có thể không phù hợp với một số điện thoại di động nhất định.


Ngoài ra, hãy xem câu trả lời này để biết tại sao nó không đáng để bạn dành thời gian thực hiện! Bạn có thể tốt hơn là đi với một bề mặt cổng mờ đục.
Kỹ sư

2
Bạn không cần bóng mờ và bộ đệm g. Kết xuất dựa trên cổng thông tin đã tồn tại từ trước khi thẻ video thậm chí còn có các shader. Bạn có thể làm điều đó bằng cách theo dõi các bề mặt cổng thông tin trong giai đoạn loại bỏ phía CPU của bạn hoặc thực hiện với bộ đệm stpson hoặc thậm chí thực hiện với bản đồ môi trường hoặc một số cách khác. :)
Sean Middleditch

Xin chào @SeanMiddleditch, tất nhiên bạn đúng; bộ đệm stpson thực sự là một cách tôi xem xét đề cập, nhưng nghĩ đến việc gắn bó với cách tiếp cận hiện đại nhất. Một lý do cho điều này là biểu diễn đệ quy biểu diễn; một điều nữa là nó được đặt vào các đường ống hiện đại, tức là nếu OP đã có bộ đệm g tại chỗ, và nếu chúng chưa có, chúng có thể sẽ ở giai đoạn sau. Tôi không biết về việc loại bỏ phía CPU, cảm ơn vì đã thêm.
Kỹ sư
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.