Ở 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.