Trong ví dụ mà chúng ta đã thực hiện ở trên, ứng dụng của chúng ta đều là dạng cửa sổ có kích thước 640x480 và được hiển thị trên màn hình desktop. Mặc dù kiểu giao diện này phù hợp cho các ứng dụng thông thường tuy nhiên đối với một ứng dụng game, bạn cần phải tạo các hiệu ứng ấn tượng người chơi bằng một không gian ảo nhưng phải thật nhất. Chính vì vậy bạn không thể không sử dụng chếđộ chạy ứng dụng ở dạng toàn màn hình.
Để tạo ứng dụng dạng này bạn chỉ cần phải thay đổi một đoạn code rất nhỏ trong ứng dụng mà chúng ta vừa tạo, thay đổi này được xác lập chủ yếu trong hàm CreateWindow.
Đây là đoạn code gọi hàm CreateWindow mà chúng ta đã dùng: wndHandle = CreateWindow(“DirectXExample”, “DirectXExample”, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL);
Bạn có thể thấy tham số thứ ba, chúng ta đã xác lập kiểu ứng dụng là dạng cửa sổ với giá trị xác lập là WS_OVERLAPPEDWINDOW. Xác lập này bao gồm kiểu ứng dụng có thanh tiêu đề, có viền bao cửa sổ và các nút nhấn thu nhỏ (Minimize) và đóng cửa sổ. Trước khi chúng ta tiến hành xác lập cửa sổ dạng thể hiện toàn màn hình, kiểu dáng cửa sổ chúng ta cần xác lập các thông số sau:
WS_EX_TOPMOST | WS_POPUP | WS_VISIBLE
Phần xác lập đầu tiên, WS_EX_TOPMOST, có tác dụng đặt vị trí hiên thị của cửa sổ này luôn ở trạng thái bên trên tất cả các cửa sổ khác. WS_POPUPcó tác dụng xác lập cửa sổ
không có viền (border), không thanh tiêu đề và không có nút Minimize và Close. Phần xác lập cuối cùng, WS_VISIBLE yêu cầu với windows để ứng dụng tự cập nhật lại màn hình ứng dụng.
Lời gọi tới hàm CreateWindow lúc này có dạng sau: wndHandle = CreateWindow(“DirectXExample”,
“DirectXExample”,
WS_EX_TOPMOST | WS_POPUP | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 640, 480, NULL, NULL, hInstance, NULL); Chú ý:
Có rất nhiều tệp tin thư viện cần thiết cho những chức năng khác nhau của DirectX. Bạn chỉ cần liên kết tới những thư viện nào chứa những hàm cần thiết mà bạn muốn sử dụng.
Tiếp theo chúng ta sẽ tiến hành thay đổi một chút mã lệnh trong hàm initDirect3D. Trong biến có kiểu cấu trúc D3DPRESENT_PARAMETERS chúng ta đã truyền cho hàm
CreateDevice, bạn cần thay đổi hai biến tham số: Windowed và BackBufferFormat. Hiện tại thì chúng ta đang sử dụng khai báo:
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.Windowed = TRUE;
Để xác lập ứng dụng dạng toàn màn hình trong DirectX, tham số Windowed và
BackBufferFormat chúng ta cần phải xác lập lại như sau: d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8;
d3dpp.Windowed = FALSE;
Thay đổi mà bạn có thể thấy ngay được đó là thuộc tính d3dpp.Windowed đã được đảo ngược giá trị. Đơn giản bởi vì nó là FALSE bởi vì bạn muốn CreateDevice biết rằng ứng dụng của bạn là dạng chiếm toàn màn hình.
Xác lập thuộc tính khác d3dpp.BackBufferFormat có lẽ bạn cảm thấy khó nắm bắt hơn.
Đối với ứng dụng kiểu cửa sổ mà chúng ta đã tạo lúc đầu, bạn không cần thiết phải quan tâm tới giá trị này bởi vì bạn sử dụng những xác lập mặc định của màn hình desktop bằng cách truyền tham số D3DFMT_UNKNOWN. Khi bạn muốn xác lập ứng dụng ở dạng chiếm toàn bộ màn hình, bạn cần thiết phải tự mình xác lập các thông số D3DFORMAT
mà bạn muốn sử dụng. Tham số kiểu D3DFORMAT có giá trị thể hiện chất lượng mầu sắc hiển thị của màn hình. Ví dụ, trong trường hợp này chúng ta sẽ chọn D3DFMT_X8R8G8B8 là giá trị mặc định mà hầu hết các thiết bị card đồ hoạđều hỗ trợ. D3DFMT_X8R8G8B8 thể hiện bạn sẽ sử dụng 32-bit để định dạng cho một điểm ảnh bao gồm 8 bit cho xác lập sắc mầu đỏ, 8 bít cho màu xanh lá cây, 8 bit cho màu xanh nước biển. Định dạng này cũng bao gồm 8 bit lưu trữ dữ liệu mở rộng.
Tất cả các xác lập lại code trên bạn có thể tìm thấy trong mã nguồn chương trình tại thư
mục chapter2\example3 trên đĩa CD-ROM đi kèm sách.
Trong phần tiếp theo, chúng ta sẽđi tìm hiểu cách để kiểm tra xem hệ thống có khả năng hỗ trợ những độ phân giải và kiểu thể hiện màu sắc ra sao.