Khởi tạo DirectX
Để lập trình với DirectX, ta cần phải download và cài đặt DirectX SDK (link hướng dẫn: Tại đây). Đồng thời khai báo các thư viện và file header của DirectX: d3d9.lib và d3d9.h.
Đầu tiên, click chuột phải vô project chọn Properties. Sau đó ở Include và Library Directories chọn tới DirectX SDK trong máy, như trong hình dưới.
Sau đó, thực hiện thêm thư viện cần thiết (d3d9.lib) như hình dưới đây:
Direct3D interface
Để chương trình có thể dùng Direct3D, ta cần phải tạo một biến để giữ một interface của Direct3D và một interface đến lớp thiết bị đồ họa. Khai báo:
Tạo đối tượng Direct3D và device
Tạo đối tượng Direct3D:
Kế tiếp là tạo ra đối tượng device đại diện cho card màn hình từ đối tượng Direct3D vừa tạo:
Bây giờ, trước khi gọi hàm này ta phải thiết lập các tham số cho thiết bị thông qua biến D3DPRESENT_PARAMETERS d3dpp và truyền con trỏ cho lời gọi hàm.
Thiết lập các số tham số cần thiết:
Ngoài ra, còn nhiều tùy chọn khác nữa. Như vậy là đủ để tạo một cửa sổ có thể vẽ bằng Direct3D. Bây giờ chúng ta sẽ xây dựng hàm Game_Run để có thể vẽ một số thứ đơn giản
Game_Run
Trong đó:
- Hàm Clear tô toàn bộ backbuffer bằng một màu cho trước, trong đoạn code trên là màu xanh lá. Chúng ta cần phải gọi hàm Clear ứng với mỗi frame để xóa toàn bộ nội dung đã vẽ ở những frame trước, nếu không xóa những hình ảnh của frame trước sẽ còn lại trên màn hình.
- Hàm Present sẽ “swap” nội dụng backbuffer lên front-buffer để thể hiện frame lên màn hình.
Game_End
Chạy trong chế độ toàn màn hình
Để game chạy trong chế độ toàn màn hình ta thay đổi một số tham số khi tạo cửa sổ và khi khởi tạo đối tượng LPDIRECT3DDEVICE như sau:
Kiểm tra phím để thoát game khi ở chế độ fullscreen Ta sẽ kiểm tra xem user có bấm phím ESC để thoát game không, nếu có, nó gửi thông điệp WM_QUIT đến chính nó để vòng lặp game kết thúc. Để kiểm tra một phím có đang được bấm không, ta dùng hàm có sẵn của Windows là GetAsyncKeyState. Đây là cách tạm thời. Sau này khi học xong DirectInput ta sẽ chuyển sang dùng DirectInput.
Tổng kết
Chúng ta đã cùng nhau tìm hiểu cách khởi tạo DirectX, Game_Run, Game_End, cách nhận thao tác bàn phím…Bài sau chúng ta sẽ bước vào tìm hiểu Surface và Bitmaps.😉 Hãy truy cập vào Series Make Game - TuiTuCodeđể học tiếp những bài thú vị khác nữa. Nếu có thắc mắc các bạn cứ bình luận bên dưới hoặc gửi thắc mắc về page TuiTuCode để các ad giải đáp. Pie~