1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO THỰC TẬP-XÂY DỰNG ỨNG DỤNG 3D VỚI DIRECT 3D

35 341 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 35
Dung lượng 380,49 KB

Nội dung

Đ tài16ề Xây d ng ng d ng 3D v i Direct 3Dự ứ ụ ớ Nhóm sinh viên thực hiện: Vũ Hữu Lực: 20115629 Lê Cao Kỳ: 20115609 Nguyễn Mậu Ngọc: 20115676 Hà Minh Trung: 20115801 Microsoft DirectX là một tập hợp các giao diện lập trình ứng dụng (API) để xử lý các nhiệm vụ liên quan đến đa phương tiện, đặc biệt là chương trình trò chơi và video trên nền tảng của Microsoft. Direct3D (API đồ họa 3D trong DirectX) được sử dụng rộng rãi trong việc phát triển trò chơi video cho Microsoft Windows, Microsoft Xbox, và Microsoft Xbox 360. Do Direct3D là thành phần công bố công khai rộng rãi nhất của DirectX, người ta thường xem tên gọi "DirectX" và "Direct3D" được sử dụng thay thế cho nhau. o Direct3D được thiết kế với mục đích là cung cấp sự truy cập độc lập thiết bị tới các phần cứng đồ hoạ 3D, có thể hiểu Direct3D là một giao thức cho việc vẽ trên phần cứng 3D. o Có thể sử dụng Direct3D ở hai chế độ: Immediate Mode và Retained Mode. o Imediate Mode là một API 3D ở mức độ thấp để liên hệ với thiết bị tăng tốc đồ họa. Immediate Mode là lý tưởng cho những nhà phát triển muốn lập chương trình với chất lượng cao trong Windows. o Retained Mode là một API 3D ở mức cao dành cho các nhà lập trình cần viết nhanh hoặc muốn sử dụng tính năng hỗ trợ về hoạt hình, Retained Mode được thiết kế ngay trên nền của Immediate Mode. Hệ thống thư viện API của DirectX được phân chia ra làm nhiều thành phần nhỏ, mỗi thành phần này đảm nhiệm những nhiệm vụ khác nhau của hệ thống.  DirectX Graphic  DirectInput  DirectPlay  DirectSound  DirectMusic  DirectShow  DirectSetup Ki n trúc c a DirectXế ủ Nền tảng của DirectX bao gồm 2 lớp: lớp hàm API và lớp (giao diện) thiết bị (HAL–Hardware Abstraction Layer). Các hàm trên lớp API sẽ kết nối tới phần cứng thông qua lớp HAL. Lớp HAL cung cấp một giao diện đã được chuẩn hoá cho DirectX, ngoài ra nó có khả năng “nói chuyện” trực tiếp với phần cứng thông qua các xác lập đối với các loại thiết bị điều khiển của chính nó. Mô hình phân l pDirect3Dớ I.Xây dựng ứng dụng đồ họa 3D với Direct 3D 1.1 Khai báo biến giao diện direct3D với ComPtr Chúng ta khai báo các biện giao diện Driect 3D với ComPtr .vì vậy có thể quản lý các biến trong một cách an toàn ngoại lệ. Sau đó chúng ta có thể sử dụng các biến để truy cập vào lớp ComPtr và các thành viên của nó . VÍ DỤ: ComPtr < ID3D11 RenderTarget View> m_renderTargetView; m_d3dDeviceContext- > OMSet RenderTargets ( 1, m_renderTargetView.GetAddress0f ( ) , nullptr ); Nếu bạn khai báo ID3D11 RenderTargetView với ComPtr, sau đó bạn có thể sử dụng ComPtr của GetAddress0f phương pháp để có được địa chỉ con trỏ đến ID3D11 RenderTargetView để vượt qua ID3D11DeviceContext :: > OMSet Render Targets . OMSet RenderTargets liên kết với các mục tiêu trả cho các giai đoạn đầu ra – sát nhập để xác định làm mục tiêu là mục tiêu đầu ra. Sau đó ứng dụng mẫu được bắt đầu, nó khởi động và tải, sau đó sẵn sàng để chạy. 1.2 Tạo các thiết bị Direct 3D Sử dụng API Direct3D để render một cảnh, đầu tiên chúng ta phải tạo ra một thiết bị Direct3D đại diện cho các bộ chuyển đổi màn hình hiển thị. Để tạo ra các thiết bị Direct3D, chúng ta gọi là D3D11CreateDevice chức năng. Direct3D mảng theo thứ tự và trả về mức độ tính năng hỗ trợ cao nhất.Vì vậy, để có được mức độ tính năng cao nhất, chúng ta liệt kê các D3D_FEATURE_LEVER mục mảng từ cao nhất . [...]... độ 3D DWORD dwFVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1 | D3DFVF_TEXCOORDSIZE3 (0); 1.2 Tạo Môi trường Bản đồ khối bề mặt Bạn tạo ra một kết cấu bản đồ môi trường khối bằng cách gọi CreateCubeTexture Ví dụ mã sau cho thấy cách ứng dụng của bạn có thể tạo ra một bản đồ môi trường khối đơn giản / / Init m_d3dDevice để trỏ đến một giao diện IDirect3DDevice9 LPDIRECT3DCUBETEXTURE9 m_pCubeMap; m_d3dDevice->... giao diện IDirect3DCubeTexture9 / / Init d3dDevice để trỏ đến một giao diện IDirect3DDevice9 void RenderFaces() { / / Lưu ma trận biến đổi của thiết bị D3DXMATRIX matProjSave, matViewSave; d3dDevice-> GetTransform (D3DTS_VIEW, & matViewSave; d3dDevice-> GetTransform (D3DTS_PROJECTION, & matProjSave); / / Lưu trữ các buffer and z-buffer (bộ đệm) LPDIRECT3DSURFACE9 pBackBuffer, pZBuffer; d3dDevice->... } Các bước thiết lập môi trường làm việc với Direct3 D Tải thư viện Direct3 D tại địa chỉ http://www.microsoft.com/en-US/download/details.aspx?id= 34429 Sau đó, ta tiến hành cài đặt như bình thường Để tạo một ứng dụng đơn giản: Trong menu file ta chọn New -> Project Đặt tên cho ứng dụng là ThucHanhDirect3D và nhấn OK - Để sử dụng các tiện ích của bộ thư viện DirectX : - Chọn mục References trong khung... D3D_FEATURE_LEVEL featureLevels [] = { D3D_FEATURE_LEVEL_11_1, D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_9_3, nullptr , / / để lại như nullptr nếu phần cứng được sử dụng creationFlags, Direct2 D cờ tương thích / / tùy chọn thiết lập gỡ lỗi và featureLevels, ARRAYSIZE (featureLevels), D3D11_SDK_VERSION, D3D11_SDK_VERSION & D3dDevice, nullptr , & D3dDeviceContext ) / / luôn... chuột phải và chọn Add References - Một cửa sổ được tạo ra, ta sẽ nhấn Browse và chọn đường dẫn tới thư viện Direct và Direct3 D, rồi nhấn Add: Sau đó, vào lớp game1.cs trong Project vừa tạo, khai báo các thư viện: Using Microsoft .Direct; Using Microsoft .Direct. Direct3D Môi trường làm việc với Direct3 D  Xin chân thành cảm ơn thầy và các bạn đã lắng nghe ^^! ... 1, D3DUSAGE_RENDERTARGET, D3DFMT_R8G8B8, D3DPOOL_DEFAULT,& m_pCubeMap); •Truy cập môi trường bản đồ khối Bạn có thể di chuyển giữa các khuôn mặt của một bản đồ môi trường khối bằng cách sử dụng các method GetCubeMapSurface Ví dụ mã sau sử dụng GetCubeMapSurface để lấy bề mặt khối lập bản đồ sử dụng cho vị trí mặt Y (mặt 2) / / Init m_pCubeMap để trỏ đến một giao diện IDirect3DCubeTexture9 LPDIRECT3DSURFACE9... các thiết bị Direct3 D / / Cờ này là cần thiết để cho phép khả năng tương thích với Direct2 D UINT creationFlags = D3D11_CREATE_DEVICE_BGRA_SUPPORT; # if được định nghĩa (_DEBUG) / / Nếu dự án là trong một gỡ lỗi xây dựng, cho phép gỡ lỗi thông qua lớp SDK với cờ này creationFlags | = D3D11_CREATE_DEVICE_DEBUG; # Endif / / Mảng này xác định thứ tự của các cấp tính năng D3D nên cố gắng tạo ra D3D_FEATURE_LEVEL... vector 3D Bạn cần phải xác định một định dạng đỉnh thích hợp Ngoài báo cho hệ thống có bao nhiêu bộ kết cấu tọa độ sử dụng ứng dụng của bạn, bạn phải cung cấp thông tin về chi tiết yếu tố trong mỗi bộ Direct3 D cung cấp D3DFVF_TEXCOORDSIZEN bộ macros cho mục đích này Các macros chấp nhận một tham số duy nhất, xác định các chỉ số của các kết cấu phối hợp Ví dụ mã sau cho thấy cách vĩ mô này được sử dụng. .. SAFE_RELEASE (pFace); d3dDevice-> BeginScene (); / / Render cảnh ở đây d3dDevice-> EndScene (); } / / Thay đổi mục tiêu làm cho trở lại bộ đệm chính d3dDevice-> SetRenderTarget (pBackBuffer, pZBuffer); SAFE_RELEASE (pBackBuffer); SAFE_RELEASE (pZBuffer); / / Khôi phục các ma trận chuyển đổi ban đầu d3dDevice-> setTransform (D3DTS_VIEW, & matViewSave); d3dDevice-> setTransform (D3DTS_PROJECTION, & matProjSave);... Sử dụng kích thước tự động swapChainDesc.Width = 0; swapChainDesc.Height = 0; / / Đây là định dạng chuỗi trao đổi phổ biến nhất swapChainDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; / / Không sử dụng nhiều mẫu swapChainDesc.SampleDesc.Count = 1; swapChainDesc.SampleDesc.Quality = 0; / / Sử dụng hai bộ đệm cho phép hiệu ứng lật swapChainDesc.BufferCount = 2; / / Chúng tôi khuyên bạn nên sử dụng hiệu ứng . chính nó. Mô hình phân l pDirect3Dớ I.Xây dựng ứng dụng đồ họa 3D với Direct 3D 1.1 Khai báo biến giao diện direct3 D với ComPtr Chúng ta khai báo các biện giao diện Driect 3D với ComPtr .vì vậy có. thiết kế với mục đích là cung cấp sự truy cập độc lập thiết bị tới các phần cứng đồ hoạ 3D, có thể hiểu Direct3 D là một giao thức cho việc vẽ trên phần cứng 3D. o Có thể sử dụng Direct3 D ở hai. 360. Do Direct3 D là thành phần công bố công khai rộng rãi nhất của DirectX, người ta thường xem tên gọi "DirectX" và " ;Direct3 D" được sử dụng thay thế cho nhau. o Direct3 D được

Ngày đăng: 23/05/2015, 17:27

TỪ KHÓA LIÊN QUAN

w