Danh mục

Begining DX9_6

Số trang: 13      Loại file: pdf      Dung lượng: 360.83 KB      Lượt xem: 14      Lượt tải: 0    
10.10.2023

Phí tải xuống: 1,000 VND Tải xuống file đầy đủ (13 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Sau khi nạp dữ liệu xong cho index buffer, bạn có thể dùng kết hợp giữa vecto và chỉ số để render đối tượng ta cần.Rendering hình hộp với Index BufferPhần trước, khi thực hiện vẽ với vertex buffer, ta dùng hàm DrawPrimitive. Hàm DrawPrimitive sử dụng dữ liệu có trong vertex buffer để tạo các đối tượng cơ bản như các tam giác nối nhau hoặc các tam giác riêng lẻ.
Nội dung trích xuất từ tài liệu:
Begining DX9_6Simpo PDF Merge and Split Unregistered Version - Dịch bởi TransTeam diễn đàn Gamedev.VN Beginning DirectX9 http://www.simpopdf.com return false; // chuẩn bị copy copy các chỉ số vào index buffer VOID* IndexPtr; // khóa index buffer hr = iBuffer ->Lock(0, 0, (void**)& IndexPtr, D3DLOCK_DISCARD); // kiểm tra xem index buffer đã được khóa chưa if FAILED (hr) return hr; // thực hiện quá trinh copy vào buffer memcpy( pVertices, IndexData, sizeof(IndexData) ); // mở khóa index buffer iBuffer->Unlock(); Sau khi nạp dữ liệu xong cho index buffer, bạn có thể dùng kết hợp giữa vecto và chỉ số để render đối tượng ta cần. Rendering hình hộp với Index Buffer Phần trước, khi thực hiện vẽ với vertex buffer, ta dùng hàm DrawPrimitive. Hàm DrawPrimitive sử dụng dữ liệu có trong vertex buffer để tạo các đối tượng cơ bản như các tam giác nối nhau hoặc các tam giác riêng lẻ. Bạn có thể vẽ bằng cách tương tự như vậy với index buffers và hàm DrawIndexedPrimitive. Hàm DrawIndexedPrimitive sử dụng index buffer như là nguồn dữ liệu và render các hình cơ bản để tạo ra đối tượng 3D. Hàm index buffer được định nghĩa như sau: HRESULT DrawIndexedPrimitive( D3DPRIMITIVETYPE Type, INT BaseVertexIndex, UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount ); Hàm DrawIndexedPrimitive có 6 đối số : ■ Type. Kiểu cơ bản được sử dụng khi render ■ BaseVertexIndex. Chỉ số đầu tiên trong vertex buffer ■ MinIndex. Chỉ số nhỏ nhất trong lời gọi. ■ NumVertices. Số lượng vecto trong lời gọi. ■ StartIndex. Vị trí đầu tiên để đọc dữ liệu từ mảng vecto ■ PrimitiveCount. Số hình cơ bản cần vẽ. Hình 5.2 biểu diễn một hình hộp render ở chế độ khung dây và tô đậm ở các đỉnh. Các vecto ở đỉnh biểu thị cho các vecto được đại diện Hình 5.2: Hình hộp trong index buffer qua các chỉ số. // cài đặt chỉ số m_pd3dDevice->SetIndices( m_pDolphinIB ); // gọi hàm DrawIndexedPrimitive để vẽ thông qua các chỉ số 79Simpo PDF Merge and Split Unregistered Version - Dịch bởi TransTeam diễn đàn Gamedev.VN Beginning DirectX9 http://www.simpopdf.com m_pd3dDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, // chỉ số đầu tiên trong vectex buffer 0, // chỉ số nhỏ nhất m_dwNumDolphinVertices, // số vecto 0, // chỉ số bắt đầu m_dwNumDolphinFaces ); // số hình Trước khi ta gọi tới DrawIndexedPrimitive ta cần gọi hàm SetIndices trước. Hàm SetIndices, được định nghĩa ở dưới, thông báo với Direct3D rằng index buffer nào sẽ được dùng làm dữ liệu vẽ. Hàm SetIndices hoạt động giống như hàm SetStreamSource khi ta sử vertex buffer. HRESULT SetIndices( IDirect3DIndexBuffer9 *pIndexData ); Hàm SetIndices chỉ có một đối số: con trỏ tới một index buffer hợp lệ. Hệ thống chuyển đổi hình học (the Geometry Pipeline) Ở các phần trên, ta đã sử dụng hệ tọa độ được quy đổi trước để vẽ các vật thể lên màn hình. Điều đó có nghĩa là vị trí của đối tượng về cơ bản đã được định nghĩa trước ở trên màn hình. Việc đó làm hạn chế không gian của ta và sự chuyển động của các vật thể ở trong nó. Phần lớn mô hình 3D không được tạo ra thông qua code. Ví dụ như, nếu bạn làm một game đua xe, chắc hẳn bạn sẽ tạo mô hình ô tô bằng các phần mềm dựng 3D. Trong suốt quá trình đó, ta có thể làm việc với mô hình một cách độc lập với hệ tọa độ tổng thể. Tức là các đối tượng sẽ được tạo ra từ tập hợp các vecto mà không cần quan tâm đến vị trí chính xác ở đâu và cách đặt như thế nào trong môi trường game. Chính vì lý do này mà bạn cần phải tự mình di chuyển và xoay các mô hình theo ý của bạn. Bạn có thể thực hiện điều đó qua hệ thống chuyển đổi hình học. Hệ thống này là là một quá trình cho phép bạn biến đổi các đối tượng từ hệ tọa độ này sang hệ tọa độ khác. Khi một mô hình được khởi dựng, nó thường được đặt vào trung tâm ở gốc tọa độ. Nó làm cho mô hình được đặt vào trung tâm của môi trường theo một hướng mặc định. Không phải tất cả mô hình bạn nạp vào đều nằm ở gốc tọa độ, vậy làm thế nào để đặt mô hình vào đúng vị trí? Câu trả lời là sử dụng các phép biến đổi. Hình 5.3 biểu diễn một hình hộp được đặt ở trung tâm tại gốc tọa độ. Các phép biến đổi bao gồm dịch chuyển, xoay, tỉ lệ. Thực hiện chúng với mô hình, bạn có thể đặt nó theo ý muốn. Các phép biến đổi đó được thực hiện thông Hình 5.3: Hình hộp được đặt qua hệ thống chuyển đổi hình học. ở trung tâm gốc tọa độ. 80Simpo PDF Merge and Split Unregistered Version - Dịch bởi TransTeam diễn đàn Gamedev.VN Beginning DirectX9 http://www.simpopdf.com Khi bạn nạp vào một mô hình, các vecto của nó được đặt trong một hệ tọa độ địa phương gọi là không gian mô hình. Không gian mô hình thì liên hệ với hệ tọa độ tổng thể nơi mà mô hình được đặt vào. Ví dụ như, trong lúc tạo đối tượng, các vecto của đối tượng sẽ liên quan đến một điểm gốc nằm ở gần chúng. Một hình hộp kích thước 2 đơn vị được đặt ở trung tâm thì các vecto của nó sẽ cách gôc tọa độ là 1 đơn vị theo các trục. Nếu bạn muốn đặt h ...

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