Chiều sâu (Depth)

Một phần của tài liệu Tìm hiểu về Lập trình đồ họa trên Symbian (Trang 28 - 30)

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.

Một phần của tài liệu Tìm hiểu về Lập trình đồ họa trên Symbian (Trang 28 - 30)