Danh mục

Các bước đầu về DirectX phần 9

Số trang: 18      Loại file: pdf      Dung lượng: 464.03 KB      Lượt xem: 6      Lượt tải: 0    
tailieu_vip

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

DIDFT_NOCOLLECTION tìm kiếm những đối tượng không liên quan đến một liên kết tập trung DIDFT_NODATA không khởi tạo dữ liệu DIDFT_PDV tìm kiếm một điều khiển POV DIDFT_PSHBUTTON tìm kiếm một nút nhấn DIDFT_RELAXIS sử dụng một trục tương đối DIDFT_TGLBUTTON tìm kiếm một nút bật tắt DIDFT_VENDORDEFINED trả về một đối tượng của một kiểu đã xác định trước
Nội dung trích xuất từ tài liệu:
Các bước đầu về DirectX phần 9 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9DIDFT_NOCOLLECTION tìm kiếm những đối tượng không liên quan đến một liên kết tậptrungDIDFT_NODATA không khởi tạo dữ liệuDIDFT_PDV tìm kiếm một điều khiển POVDIDFT_PSHBUTTON tìm kiếm một nút nhấnDIDFT_RELAXIS sử dụng một trục tương đốiDIDFT_TGLBUTTON tìm kiếm một nút bật tắtDIDFT_VENDORDEFINED trả về một đối tượng của một kiểu đã xác định trướcMục đích của hàm callback EnumObjects là thu thập thông tin về thành phần của InputDevice. Thông tin này tập hợp lại cho mỗi thiết bị được truyền tới callback như một cấu trúcDIDEVICEOBJECTINSTANCEBOOL CALLBACK DIEnumDeviceObjectsCallback(LPDIDEVICEOBJECTINSTANCE lpddoi,LPVOID pvRef);hàm DIEnumDeviceObjectsCallback lấy 2 tham số. Tham số thứ nhất là cấu trúc kiểuDIDEVICEOBJECTINSTANCE mà giữ thông tin trả về liên quan đến thiết bị. Tham số thứ hailà bất kỳ giá trị nào được truyền cho tham số pvRef của hàm EnumObjects .Cấu trúc DIDEVICEOBJECTINSTANCE chứa đựng sự giàu có thông tin có giá trị về thiết bị.Nó hữu ích cho việc thiết lập giới hạn của force feedback, cũng như giúp xác định các dạng riêngbiệt và chỉ số của điều khiển trên thiết bị.Bạn có thể tìm thấy giải thích đầy đủ về cấu trúc DIDEVICEOBJECTINSTANCE trong tư liệucủa DirectInputKhai thác Input từ bàn phímThu hoạch input từ bàn phím là một việc có phần nào đơn giản vì nó là một thiết bị xác lập mặcđịnh. Bàn phím cần có một bộ nhớ đệm chứa 256 phần tử ma trận kí tự.Char buffer[256];Ma trận kí tự này lưu giữ trạng thái của mỗi phím trên bàn phím. Trạng thái của một hoặc nhiềuphím có thể được lưu trong ma trận này mỗi khi biết bị bàn phím được đọc. Điều mà hầu hết cácgame đều cần là Input Device có thể đọc mỗi trạng thái từ trong vòng lặp chính của game.Trước khi bạn có thể đọc từ bàn phím, bạn cần xác định một bước quan trọng là phím nào trênbàn phím đã nhấn. Macro KEYDOWN cung cấp dưới đây trả về TRUE hoặc FALSE dựa trên cơ sởphím mà bạn đang kiểm tra có được nhấn hay không..#define KEYDOWN (name, key) { name[key]& 0x80}sau đây là ví dụ đọc từ bàn phím.//xác định macro cần kiểm tra trạng thái cảu phím trên bàn phím.#define KEYDOWN (name, key) { name[key]& 0x80}Đây là bộ nhớ đệm cần thiết của bàn p hím 145 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9Char buffer[256];//đây là vòng lặp chính đọc từ Input Device của mỗi khungwhile(1){//kiểm tra bàn phím và xem xét phím nào hiện tại đang được nhấng_lpDIDevice->GetDeviceState(sizeof (buffer), (LPVOID )&buffer);//làm việc gì đó với Input//KEYDOWN macro ở đay kiểm tra phím mũi tên sang trái có được nhấn hay khôngif (KEYDOWN(buffer, DIK_LEFT)){//làm gì đó vói mũi tên sang trái}// KEYDOWN được sử dụng một lần nữa để kiểm tra phím mũi tên lên trên//có đựoc nhấn hay khôngif(KEYDOWN(buffer, DIK_UP)){//làm một việc gì đó với phím mũi tên lên trên}}Như bạn có thể thấy là vòng lặp chính của game gọi hàm GetDeviceState cho mỗi trạng tháivà đưa trạng thái hiện tại của bàn phím vào Input Buffer. KEYDOWN macro kiểm tra trạng tháicủa một phím nào đó.Hình 9.2 chỉ ra một minh họa nhỏ về sử dụng bàn phím đưa vào để hiển thị mũi tên định hướngnào đã đượcc nhấn.Bạn có thể tìm thấy mã nguồn của ví dụ này trong thư mục chapter9example1 trên đĩa CD-ROMThu dữ liệu vào từ ChuộtĐọc dữ liệu vào từ chuột cũng tương tự như từ bàn phím. Sự khác nhau cơ bản ở đây là GUIDđược gán cho hàm CreateDevice và cấu trúc DIDATAFORMAT lưu dữ liệu vào của thiết bịnày.hình 9.2 ví dụ minh họa bàn phím. 146 Dịch bởi TransTeam diễn đàn Gamedev.VNBeginning DirectX9Ở ví dụ trước, việc gọi hàm CreateDevice sử dụng GUID_SysKeyboard cho tham số thứnhất. Khi bạn sử dụng chuột, bạn phải thiết lập GUID kiểu GUID_SysMouse choCreateDevice.Chú ý:Khi thiết lập cooperative level ở chế độ độc quyền cho chuột thì Input ngăn chặn con trỏWindows hiển thị. Trong chế độ độc quyền, bạn có trách nhiệm phải vẽ con trỏ chuột.Đoạn chương trình sau chỉ ra cách sử dụng hàm CreateDevice như thế nào//gọi hàm CreateDevice sử dụng tham số GUID_SysMousehr=g_lpDI->CreateDevice(GUID_SysMouse, &g_lpDiDevice, NULL);//kiểm tra giá trị trả về cảu hàm CreateDevicenếu FAILED (hr) return FALSE;Việc gọi tới hàm SetDataFormat đã sử dụng định dạng dữ liệu định trướcc_dfDIKeyboard. Bạn phải thay đổi giá trị này thành c_dfDIMouse khi bạn sử dụng chuộtlà Input Device.//thiết lập định dạng dữ liệu cho Chuộthr= g_lpDIDevice->SetDataFomat(&c_dfDIMouse);//kiểm tra giá trị trả về cho hàm SetDataFormatif ...

Tài liệu được xem nhiều: