Direct3D – Texture Mapping
Texture Mapping là kỹ thuật dùng ảnh thật để lát lên bề mặt vật thể, tạo cảm giác thật hơn. Thông thường, ảnh dùng để làm texture có kích cỡ là số mũ của 2. Direct3D có thể dùng ảnh với kích cỡ bất kỳ để làm texture nhưng hiệu quả cao nhất khi kích thước ảnh là số mũ của 2.
Khi một texture được tạo ra, dữ liệu ảnh được lưu trong bộ nhớ màn hình. Kích thước texture càng lớn thì càng tốn bộ nhớ và làm giảm hiệu năng. Do đó cần phải cân bằng giữa chất lượng hình ảnh với hiệu năng.
Texture có thể được tạo ra bằng cách tải một tệp ảnh từ ngoài, hoặc sử dụng ảnh lưu trong tài nguyên chương trình. Để tải ảnh từ ngoài, dùng các phương thức của lớp TextureLoader, để tạo texture từ một đối tượng Bitmap có sẵn, tạo mới một đối tượng texture dùng toán tử new với hàm tạo tương ứng.
Để ảnh có thể lát chính xác lên bề mặt của vật thể, thì mỗi đỉnh ngoài 3 toạ độ không gian cần có thể 2 toạ độ dùng trong texture mapping, thông thường được ký hiệu là u, v. Theo đó, đỉnh có (u, v) = (0, 0) sẽ tương ứng với góc trên trái của ảnh, đỉnh có (u, v)=(1, 1) tương ứng với góc dưới phải của ảnh. Như vậy giả sử một hình chữ nhật với đỉnh trên trái có (u, v) = (0, 0) và dưới phải có (u, v) = (2, 3) thì ảnh sẽ được lát 6 lần lên bề mặt, gấp hai theo chiều dọc và gấp ba theo chiều ngang.
Bài này giới thiệu một chương trình sử dụng kỹ thuật texture mapping lát một ảnh lên các mặt của một khối lập phương. Có thể áp dụng kỹ thuật texture mapping để tạo ra hình nền bằng cách tạo một hình chữ nhật bằng kích cỡ màn hình và lát lên đó hình nền. Tuy nhiên khi đó kích thước texture có thể rất lớn, do đó với hình nền nên dùng phương pháp vẽ thẳng ảnh vào vùng nhớ.
Tải về: chương trình minh hoạ
Ghi chú: Để dịch và chạy được chương trình này, máy tính cần cài đặt các công cụ cần thiết. Để biết thêm chi tiết, xem thêm các bài trước về Direct3D.