2010-12-12 26 views
7

Trong OpenGL, có thể vẽ một dãy các đa giác không kiểm tra độ sâu (vì vậy chúng sẽ luôn được vẽ trước các đa giác khác được vẽ trước đó) liên quan đến vị trí z của chúng)Ghi vào bộ đệm sâu mà không cần kiểm tra độ sâu trong OpenGL (không đổ bóng)

nhưng đồng thời, chúng vẫn ghi vào bộ đệm độ sâu?

Tôi cho rằng điều này có thể thực hiện được bằng các trình đổ bóng, nhưng hiện tại tôi không có quyền truy cập vào điều đó.

Trả lời

16

Không nói đúng (từ man page):

depth buffer không được cập nhật nếu thử nghiệm sâu bị vô hiệu hóa.

Nhưng ... bạn có thể có kích hoạt kiểm tra chiều sâu, trong khi không có bất kỳ mảnh vỡ không kiểm tra:

glDepthFunc(GL_ALWAYS); 
glEnable(GL_DEPTH_TEST); 

Tất nhiên, bạn sẽ có được Z cuối cùng được viết bởi làm điều đó, không phải là gần gũi nhất để xem.

3

Bạn chỉ có thể đạt được điều đó khi sử dụng hai thẻ. Đầu tiên là điền vào bộ đệm độ sâu chỉ bằng cách sử dụng mặt nạ màu:

glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 

Lần thứ hai bạn cho phép ghi màu một lần nữa, tắt kiểm tra độ sâu và hiển thị trình tự đa giác theo thứ tự.

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