Siêu thị PDFTải ngay đi em, trời tối mất

Thư viện tri thức trực tuyến

Kho tài liệu với 50,000+ tài liệu học thuật

© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Các bước đầu về DirectX phần 4 docx
MIỄN PHÍ
Số trang
18
Kích thước
399.8 KB
Định dạng
PDF
Lượt xem
1669

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

Nội dung xem thử

Mô tả chi tiết

Beginning DirectX9 Dịch bởi TransTeam diễn đàn Gamedev.VN

55

LARGE_INTEGER timeEnd;

QueryPerformanceCounter(&timeStart);

Render( );

QueryPerformanceCounter(&timeEnd);

LARGE_INTEGER numCounts = ( timeEnd.QuadPart – timeStart.QuadPart )

Sau khi các đoạn mã trên đã được thực hiện xong, biến numCounts sẽ chứa giá trị số

xung nhịp của bộ đếm thời gian đã diễn ra giữa hai lần gọi tới hàm

QueryPerformanceCounter. Biến QuadPart được khai báo với kiểu LARGE_INTEGER

tương đương 64bit dữ liệu trên bộ nhớ và được dùng để nhận giá trị trả về của bộ đếm

thời gian hệ thống.

Sau khi bạn đã có giá trị chênh lệch khoảng thời gian giữa hai lần gọi, bạn sẽ cần thực

hiện một bước nữa trước khi bạn có được một giá trị hữu dụng trong quá trình hiển thị

ảnh động của sprite. Đó là bạn cần phải chia giá trị numCounts này cho tần số hoạt động

của bộ đếm thời gian.

Hàm QueryPerformanceFrequency dùng để lấy về giá trị tần số của bộ đếm thời gian này

của hệ thống.

Hàm QueryPerformanceFrequency này chỉ yêu cầu duy nhất một đối số: con trỏ đối

tượng có kiểu LARGE_INTEGER để lưu giữ kết quả trả về của hàm. Mã nguồn minh hoạ

quá trình gọi hàm này được liệt kê dưới đây:

LARGE_INTEGER timerFrequency;

QueryPerformanceFrequency(&timerFrequency);

Sau khi bạn có giá trị tần số hoạt động của bộ đếm, bạn có thể sử dụng kết hợp với giá trị

của biến numCounts để tính toán tỷ lệ thời gian của quá trình di chuyển cũng như hiển thị

ảnh động của sprite. Đoạn mã sau minh hoạ quá trình tính toán:

float anim_rate = numCounts / timerFrequency.QuadPart;

Bây giờ thì chúng ta đã có giá trị tỷ lệ cần thiết để thể hiện các hình ảnh động một cách

mượt mà hơn.

Thay đổi cấu trúc dữ liệu của các Animation

Trong phần này chúng ta sẽ ứng dụng những kiến thức đã học ở trên để thay đổi lại mã

nguồn ví dụ 4 có sử dụng kỹ thuật hiển thị hình động trên bộ định thời gian hệ thống.

Bước đâu tiên chúng ta cần thực hiện đó là thay đổi lại cấu trúc dữ liệu của Animation. Ở

trong phần trước chúng ta đã khai báo các biến moveX và moveY là các biến kiểu

nguyên. Chúng ta sẽ phải thay đổi kiểu dữ liệu này sang kiểu thực float để các hình ảnh

của sprite sẽ được di chuyển chính xác hơn. Dưới đây là cấu trúc của sprite đã được cập

nhật lại:

struct {

RECT srcRect; // holds the location of this sprite

// in the source bitmap

float posX; // the sprite’s X position

float posY; // the sprite’s Y position

Chú ý:

Tần số hoạt động của bộ đếm là giá trị đại diện cho số xung nhịp mà đồng hồ thực hiện

trong một giây.

Tải ngay đi em, còn do dự, trời tối mất!