Trong phần này chúng ta sẽ thảo luận làm thế nào để thêm chiều sâu vào chương trình của bạn cho phép các z (trục) có thể phối hợp hoạt động một cách chính xác
Điều này được hoàn thành khi sử dụng lời gọi đến depth buffer. depth buffer có chứa một giá trị cho mỗi điểm ảnh trên màn hình, giá trị này trong khoảng từ 0 đến
1. Điều này đại diện cho khoảng cách từ đối tượng đến người xem, mỗi sự đồng bộ có sự liên kết sâu về giá trị. Khi hai giá trị chiều sâu được so sánh thì giá trị thấp hơn sẽ được hiển thị trên màn hình.
Nội dung của hàm main.cpp
Bước đầu tiên ta phải bật chức năng depth buffer điều này được thực hiện thông qua cờGL_DEPTH_TEST trong hàm glEnable
Như phần đầu của hướng dẫn chúng tôi đã nói đến việc hạ thấp hơn giá trị của chiều sâu, sự phối hợp chặt chẽ hơn cho người xem. Điều này có thể thay đổi
28
bằng cách sử dụng chức năng glDepthFunc chức năng này chỉ định giá trị trong depth buffer để so sánh. Các giá trị này được thông báo qua bảng sau:
Cờ Mô tả
GL_NEVER Không bao giờ đi qua
GL_LESS Đi qua nếu giá trị chiều sâu đưa vào nhỏ hơn giá trị được lưu trữ
GL_EQUAL Đi qua nếu giá trị chiều sâu đưa vào bằng giá trị được lưu trữ
GL_LEQUAL Đi qua nếu giá trị chiều sâu đưa vào nhỏ hơn hoặc bằng giá trị được lưu trữ
GL_GREATER Đi qua nếu giá trị chiều sâu đưa vào lớn giá trị được lưu trữ
GL_NOTEQUAL Đi qua nếu giá trị chiều sâu đưa vào không bằng giá trị được lưu trữ
GL_GEQUAL Đi qua nếu giá trị chiều sâu đưa vào lớn hơn hoặc bằng giá trị được lưu trữ
GL_ALWAYS Luôn đi qua
Giá trị cờ mặc định là GL_LESS chúng tôi muốn thử đi qua khi các giá trị bằng nhau. Điều này sẽ sảy ra khi các đối tượng có cùng các giá trị z, màn hình sẽ hiển thị tùy thuộc vào thứ tự mà đối tượng đó được in ra.
Sự thử chiều sâu để so sánh các giá trị bạn phải khởi tạo tất cả các giá trị trong bộ đệm. Điều này có thể đạt được bằng cách sử dụng chức năng
glClearDepthf, chức năng này sẽ đưa ra một trong những tham số chỉ ra giá trị về chiều sâu trong bộ đệm dùng để khởi tạo cùng.
29
Hiển thị một số hình tam giác trên màn hình làm việc với depth buffer
Vẽ tam giác thứ 2 hơi ở trên tam giác đầu tiên
Tam giác thứ 3 quay 45 độ theo trục z của tam giác thứ 2
Cuối cùng là tam giác đặt cùng với trục z của tam giác đầu tiên, đây là hình tam giác nhỏ nằm ở phía bên phải.