Bài toán hiển thị nét đứt cho các đường bị khuất (trong

Một phần của tài liệu Chương trình hỗ trợ dạy và học môn hình học lớp 11 (Trang 73 - 75)

5 Hiện thực chương trình

5.1.3 Bài toán hiển thị nét đứt cho các đường bị khuất (trong

(trong không gian 3D)

Ẹ OpenGL không hỗ trợ xác định các đối tượng bị khuất trong một mơ hình Ẹ Mỗi pixel có chế độ lưu giá trị chiều sâu của điểm đó nếu nó được vẽ Ẹ OpenGL hỗ trợ kiểm tra, so sánh chiều sâu của điểm sắp được vẽ với giá trị

chiều sâu được lưu tại pixel đó Ẹ Phương pháp:

Ê Bật kiểm tra chiều sâu: glEnable(GLDEPTH_TEST)

Ê Tạo một lớp màng chiều sâu ẩn:

∗ Bật chế độ chiều sâu nhỏ hơn: glDepthFunc(GL_LESS) ∗ Bật chế độ ghi lại chiều sâu: glDepthMask(GL_TRUE)

Tại mỗi pixel, nếu có điểm mới sắp được vẽ sẽ kiểm tra: nếu chiều sâu của điểm đó nhỏ hơn chiều sâu hiện tại của pixel

→ Điểm đó sẽ được vẽ lên pixel, đồng thời cập nhật lại chiều sâu của pixel đó

∗ Vẽ hình với màu sắc trong suốt (alpha = 0) và tạo độ chênh lệch chiều sâu để tránh việc những đường thấy được có cùng chiều sâu với lớp màng này không được hiển thị: glPolygonOffset(2.0, 1.0);

Ê Vẽ đường nét đứt cho các đối tượng ở xa:

∗ Bật chế độ chiều sâu lớn hơn: glDepthFunc(GL_GREATER) ∗ Tắt chế độ ghi lại chiều sâu: glDepthMask(GL_FALSE)

Tại mỗi pixel, nếu có điểm mới sắp được vẽ sẽ kiểm tra: nếu chiều sâu của điểm đó lớn hơn chiều sâu hiện tại của pixel

→ Điểm đó sẽ được vẽ lên pixel, nhưng khơng cập nhật lại chiều sâu của pixel đó

5.1 Các bài tốn và khó khăn gặp phải Ê Vẽ nét liền cho các đối tượng ở gần nhất:

∗ Bật chế độ chiều sâu nhỏ hơn hoặc bằng: glDepthFunc(GL_LEQUAL) ∗ Bật chế độ ghi lại chiều sâu: glDepthMask(GL_TRUE)

Tại mỗi pixel, nếu có điểm mới sắp được vẽ sẽ kiểm tra: nếu chiều sâu của điểm đó nhỏ hơn hoặc bằng chiều sâu hiện tại của pixel → Điểm đó sẽ được vẽ lên pixel, và cập nhật lại chiều sâu của pixel đó ∗ Vẽ hình với định dạng là đường nét liền

5.1 Các bài tốn và khó khăn gặp phải

Một phần của tài liệu Chương trình hỗ trợ dạy và học môn hình học lớp 11 (Trang 73 - 75)

Tải bản đầy đủ (PDF)

(92 trang)