2011-07-30 43 views
6

Có ai đã triển khai hiển thị/tô bóng trả chậm theo OpenGL ES 2.0 không? Nó không hỗ trợ tàu điện ngầm, do đó, chỉ với một bộ đệm màu, nó không phải là một cái gì đó có thể được thực hiện theo cách "thông thường".Có thể hiển thị/tô bóng bị trì hoãn với OpenGL ES 2.0 không?

Cụ thể, tôi đang khám phá trên iPad, iPhone4 (3ga iPhone 3ga) và Android. Trên ứng dụng GLESView trên iPad/iPhone4/iPhone3gs, phần mở rộng GL_OES_RGB8_RGBA8 hiện diện và tôi chưa nhìn quá sâu, nhưng với 8bits/kênh, ý tưởng này thú vị: http://www.gamedev.net/topic/562138-opengl-es-20-and-deferred-shading/

Bất kỳ ý tưởng nào khác? Nó có đáng làm, hiệu quả không?

Trả lời

2

mặc dù có phần mở rộng GL_ARB_draw_buffers sẵn trên một số thiết bị Android (và do đó render cho nhiều bộ đệm là có thể), câu trả lời là "Không" (với một ngoại lệ có thể xảy ra một số "tôi vẽ 50 milion đa giác" bộ quét ràng buộc kịch bản).

Đó là do các GPU được sử dụng trên các thiết bị này có các pixel shaders rất yếu và do đó làm một màn hình toàn màn hình với một số shader phức tạp là khá nhiều trong số các câu hỏi. Bạn tốt hơn dính vào các thủ thuật demoscene ngày xưa đã được sử dụng trước khi lập trình bóng trở thành chủ đạo.

Dù bạn có thể di chuyển đến đổ bóng đỉnh, hãy làm điều đó (ví dụ: hiệu ứng như biến dạng toàn màn hình tốt hơn khi sử dụng lưới bị biến dạng trong trình đổ bóng đỉnh, thay vì bù trừ texcoords trong trình đổ bóng phân đoạn).

Bất cứ điều gì bạn có thể giải quyết bằng cách sử dụng hình học (ví dụ: kết xuất hộp bầu trời làm bằng hộp thực tế sẽ nhanh hơn hiển thị quad toàn màn hình và tính chỉ đường xem để lấy mẫu kết cấu trong bóng đổ).

Vâng, điều duy nhất chúng tôi có thể làm, là hy vọng cho các thiết bị mới có trình tối ưu hóa pixel mạnh hơn để có sẵn. Tôi hy vọng nó không phải là quá nhiều của một câu trả lời buồn :) tất nhiên, bạn có thể cố gắng thực hiện bóng mờ hoãn trên Android, nhưng nó có thể sẽ chậm.

Các vấn đề liên quan