Những kiểu cơ bản

Một phần của tài liệu Beginning DirectX9 pot (Trang 69 - 73)

Ở trên, bạn phải lựa chọn cài đặt kiểu cơ bản mà DrawPrimitive sẽ sử dụng để render những vecto trong vertex buffer. Và như vậy trong ví dụ trước ta đã chọn kiểu triangle strip với mục đích đơn giản hóa việc vẽ và tạo khả năng cho thêm các tam giác một cách

dễ dàng. Phần tiếp theo ta sẽ giải thích chi tiết hơn một chút về sự khác nhau giữa các kiểu cơ bản.

Point list

Một point list bao gồm một loạt các điểm không nối với nhau. Hình 4.9 biểu diễn một lưới tọa độ chứa bốn điểm riêng biệt. Mỗi điểm được xác định qua các tọa độ X, Y và Z. Ví dụ nhưđiểm cao nhất ở phía trái được xác định qua (1, 6, 0).

Line List

Một line list bao gồm các đoạn thẳng đi qua hai điểm. Những đoạn thẳng thuộc danh sách

đoạn thẳng thì không nối liền với nhau. Hình 4.10 biểu diễn hai đoạn thẳng render bằng (line list). Nó được xây dựng từ bốn vecto. Đoạn thẳng phía bên trái có điểm phía trên là (-6, 5, 0) và điểm phia dưới là (-4, 2, 0).

Line Strip

Một line strip là một loạt các đoạn thẳng nối nhau, trong đó mỗi đoạn thẳng thêm vào

được xác định chỉ bằng một vecto. Mỗi vecto trong line strip nối với một vecto liền trước tạo thành một đoạn thẳng. Hình 4.11 biểu diễn một line strip, nó được xây dựng thông qua 6 vecto và sinh ra 5 đoạn thẳng.

Triangle List

Một triangle list bao gồm các tam giác không nối với nhau và xuất hiện tự do bất cứđâu trong hệ

tọa độ. Hình 4.12 biểu diễn hai tam giác được tạo ra từ 6 vecto. Mỗi tam giác cần 3 vecto.

Hình 4.9: ví dụ về point list Hình 4.10: ví dụ về line list

Triangle Strip

Một triangle strip là một loạt các tam giác nối với nhau trong đó mỗi tam giác thêm vào được xác định chỉ bằng một vecto. Hình 4.13 biểu diễn 4 tam giác được tạo ra chỉ bằng 6 vecto. Những triangle strip được xây dưng bằng cách đưa vào 3 vecto đầu tiên để định nghĩa một tam giác. Sau đó, mỗi khi một vecto được thêm vào, thì sẽ sinh ra hai đoạn thẳng nối 2 vecto được thêm vào sau cùng với vecto vừa thêm tạo thành một tam giác mới. Trong hình 4.13, biểu diễn cả thứ tự của các vecto được thêm vào.

Hình 4.13: ví dụ về triangle strip

Triangle Fan

Một triangle fan là một loạt các tam giác có chung nhau một vecto. Sau khi tam giác đầu tiên được tạo thành, mỗi một vecto thêm vào sẽ tạo thành một tam giác mới có một đỉnh là vecto được thêm vào đầu tiên, một đỉnh là vecto được thêm vào cuối cùng, đỉnh còn lại là vecto vừa thêm vào.

Hình 4.14 biểu diễn ba tam giác được tạo thành từ 5 vecto. Thứ tự của các vecto sẽ quy

định hình dạng của triangle fan. Hình 4.14 cũng biểu diễn cả trình tựđưa các vecto vào để

tạo thành một triangle fan như như bạn thấy.

Hình 4.14: ví dụ về triangle fan

Tổng kết chương

Chương này, chỉ mới nêu ra những khái niệm cơ bản về 3D. Trong các chương tiếp theo, bạn sẽđược học thêm một số chủđề nâng cao hơn, nhưng ngay từ bây giờ bạn cần phải hiểu một cách rõ ràng về công dụng của vertex buffers.

Giờđây bạn đã có những khái niệm cơ bản về cách làm việc của không gian 3D và làm thế

nào để định nghĩa một vật thể ở trong nó, đã đến lúc để học cách len lỏi sâu hơn vào cái giới này. Trong chương tiếp theo, bạn sẽđược học cách xoay và di chuyển một vật thể.

Những kiến thức bạn đã được học

Trong chương này bạn đã được học:

■ Sự khác nhau giữa không gian 2D và 3D.

■ Vecto là gì và cách xác định chúng

■ Cách tạo và sử dụng vertex buffer

■ Cách render các vecto.

■ Các kiểu cơ bản khác nhau được đề cập trong Direct3D.

Các câu hỏi ôn tập

Bạn có thể tìm thấy đáp án của các câu hỏi và bài tập ở phần phụ lục A, “Đáp án phần bài tập cuối chương”.

1. Cách xác định một điểm trong hệ tọa độ 3D? 2. Trục tọa độ nào thường dùng để diễn tả chiều sâu? 3. Hàm SetFVFdùng để làm gì?

4. Kiểu cơ bản nào dùng để xây dựng một loạt các đoạn thẳng liên tiếp nhau? 5. Cần có bao nhiêu vecto để xây dựng một triangle strip gồm 5 tam giác?

Bài tập

1. Viết một hàm để render một line list bao gồm 4 đoạn thẳng. 2. Viết một hàm để render một số tam giác sử dụng kiểu triangle list.

Một phần của tài liệu Beginning DirectX9 pot (Trang 69 - 73)

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

(178 trang)