2012-11-17 29 views
8

Tôi gặp khó khăn khi hiểu ý nghĩa của tham số đầu tiên trong hàm glPolygonOffset.Ý nghĩa và cách sử dụng tham số yếu tố trong glPolygonOffset

void glPolygonOffset(GLfloat factor, GLfloat units); 

The official documentation nói rằng yếu tố

Chỉ định một yếu tố quy mô được sử dụng để tạo độ sâu biến bù đắp cho mỗi đa giác.

giá trị sâu sắc của mỗi đoạn sẽ được bù đắp sau khi nó được nội suy từ các giá trị chiều sâu của các đỉnh thích hợp. Giá trị của offset là hệ số × DZ + r ×, trong đó DZ là phép đo độ sâu thay đổi tương ứng với vùng màn hình của đa giác, và r là giá trị nhỏ nhất được đảm bảo để tạo ra độ lệch có thể phân giải cho một thực hiện.

Tôi hiểu những gì runit. Những gì tôi không hiểu là những gì DZ là, nghĩa là "đo lường sự thay đổi về giá trị độ sâu cho khu vực màn hình của đa giác" và tại sao tôi cần phải đặt yếu tố thành bất kỳ điều gì khác ngoài 0.

Nếu tôi muốn khung dây của mình được bù đắp tất cả những gì tôi cần là thêm/giảm một vài đơn vị đến/từ giá trị độ sâu, phải không? Ý nghĩa, mục đích và cách sử dụng ví dụ của tham số yếu tố (và DZ được đề cập trong tài liệu) là gì?

Trả lời

8

Tôi phải thừa nhận một số thiếu hiểu biết ở đây, nhưng tôi đã tìm thấy this article giải thích điều đó. Họ nói:

Để đạt được kết xuất đẹp của vật thể được đánh dấu không có đồ thị, bạn có thể thêm chênh lệch dương cho vật thể rắn (đẩy nó ra xa bạn) hoặc âm bù cho khung dây (kéo nó hướng tới bạn). Câu hỏi lớn là: "Bao nhiêu bù đắp là đủ?" Thật không may, bù đắp yêu cầu phụ thuộc vào các yếu tố khác nhau, bao gồm độ dốc sâu của mỗi đa giác và chiều rộng của các đường trong khung dây.

Sau đó, họ giải thích độ sâu dốc theo cách này:

Độ dốc sâu là sự thay đổi trong giá trị z (chiều sâu) chia cho sự thay đổi trong hoặc x hoặc y tọa độ, khi bạn đi qua một đa giác. Giá trị độ sâu nằm trong tọa độ cửa sổ, được gắn vào phạm vi [0, 1]. Để ước tính độ dốc sâu tối đa của một đa giác (m trong phương trình offset), sử dụng công thức này: m = max {| delV/delS |, | delV/delT |}. (Nơi del là một đạo hàm riêng)

Vì vậy, họ kết luận rằng:

Đối với đa giác đó là song song với mặt phẳng gần xa cắt, độ dốc sâu là zero. [...] Đối với đa giác ở góc độ lớn với mặt cắt cắt, độ dốc độ sâu có thể lớn hơn đáng kể so với 0, và có thể cần một khoảng bù lớn hơn. Các giá trị nhỏ, khác không cho hệ số, chẳng hạn như 0.75 hoặc 1.0, có lẽ đủ để tạo ra các giá trị độ sâu riêng biệt và loại bỏ các tạo phẩm trực quan khó chịu.

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