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 6 pps
MIỄN PHÍ
Số trang
18
Kích thước
426.5 KB
Định dạng
PDF
Lượt xem
1730

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

Nội dung xem thử

Mô tả chi tiết

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

91

D3DXMatrixScaling(&matScale, 2.0f, 2.0f, 2.0f);

// Nhân ma trận đối tượng với ma trận tỉ lệ

D3DXMatrixMultiply(&objMat, & objMat, &matScaling);

Biến objMat ở trên biểu diễn ma trận gốc của đối tượng. nhân ma trận của đối tượng với

ma trận tỉ lệ ta sẽ có thể thu phóng đối tượng khi vẽ.

Thứ tự trong các phép tính toán ma trận

Thứ tự trong các phép toán là rất quan trọng. Ví dụ như, nếu bạn muốn xoay một đối

tượng quanh tâm của nó và sau đó dịch chuyển nó đi đâu đó, thì trước tiên bạn cần tính

toán với ma trận xoay trước tiếp đó là đến ma trận tịnh tiến. Nếu hai phép tính này được

đổi chỗ cho nhau, thì đối tượng sẽ được tịnh tiến đến 1 vị trí khác sau đó mới được xoay

quanh gốc tọa độ. Điều này có thể làm cho đối tượng được đặt ở một ví trí khác và hướng

theo một hướng khác trong không gian. Đoạn code sau chỉ ra trình tự đúng để thực hiện

phép xoay và tịnh tiến đối tượng:

D3DXMATRIX objRotate;

D3DXMATRIX objTranslation;

D3DXMATRIX objFinal;

// phép xoay

D3DXMatrixRotationY(&objRotate, D3DXToRadian(45));

// phép tịnh tiến

D3DXMatrixTranslation(&objTranslation, 1.0f, 0.0f, 0.0f);

// nhân ma trận xoay và ma trận tịnh tiến với nhau

D3DXMatrixMultiply(&objFinal, &objRotate, &objTranslation);

// thực hiện phép biến đổi trong không gian thực

pd3dDevice->SetTransform(D3DTS_WORLD, &objFinal);

Bước thứ nhất là tạo ma trận xoay đối tượng, objRatate. Sử dụng hàm

D3DXMatrixRotationY như trên, đối tượng sẽ được quay một góc 45 độ quanh trục Y.

Tiếp theo ta tịnh tiến đối tượng đã xoay một đơn vị về bên phải bằng cách sử dụng hàm

D3DXMatrixTranslation.

Cuối cùng, ta tạo ra ma trận biến đổi bằng cách nhân ma trận xoay và ma trận tịnh tiến

với nhau với hàm D3DXMatrixMultiply. Nếu ma trận xoay và ma trận được đảo chỗ cho

nhau (hoán vị) trong lời gọi hàm D3DXMatrixMultiply, thì phép tịnh tiến sẽ được thực

hiện trước phép xoay, và đối tượng bị rời sang vị trí khác.

Tạo một camera bằng các phép chiếu

Bạn có thể tạo ra một camera trong Direct3D bằng cách định nghĩa một ma trận cho bước

(projection transformation). Ma trận này định nghĩa một vùng nhìn cho camera, hệ số co,

mặt phẳng clipping xa và gần.

Sau khi bạn đã tạo được ma trận chiếu, bạn thiết lập nó thông qua hàm SetTransform. Bạn

có thể thấy rằng, hàm SetTransform đã được sử dụng ở ví dụ trước. SetTransform, định

nghĩa ở dưới đây, cho phép thiết lập ma trận cho các bước của hệ thống chuyển đổi hình

học. Ví dụ như, khi bạn thiết lập ma trận cho một camera, cũng có nghĩa là bạn đang quy

định cho scene sẽ được quan sát ra sao trong suốt giai đoạn chiếu. Giai đoạn này cũng là

giai đoạn cuối cùng của hệ chuyển đổi hình học, nó quy định cách mà khung cảnh 3D sẽ

được render dưới dạng 2D.

HRESULT SetTransform(

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