1. 程式人生 > >DirectX入門之初始化Direct3D及常見問題

DirectX入門之初始化Direct3D及常見問題

這篇文章主要講解如何初始化Direct3D。Direct3D初始化成功後,我們將的到一個代表顯示卡的C++物件(型別:IDrect3DDevice9)。

初始化流程圖:

這裡寫圖片描述

完整程式碼:


   //全域性變數
   IDirect3DDevice9 *device = 0 ;
   // Step 1: Create the IDirect3D9 object.

   IDirect3D9* d3d9 = 0;
   d3d9 = Direct3DCreate9(D3D_SDK_VERSION);

   if (!d3d9)
   {
       return false;
   }

   // Step 2: Check for hardware vp.
D3DCAPS9 caps; d3d9->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &caps); int vp = 0; if (caps.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) vp = D3DCREATE_HARDWARE_VERTEXPROCESSING; else vp = D3DCREATE_SOFTWARE_VERTEXPROCESSING; // Step 3: Fill out the D3DPRESENT_PARAMETERS structure.
D3DPRESENT_PARAMETERS d3dpp; d3dpp.BackBufferWidth = 800; d3dpp.BackBufferHeight = 600; d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8; d3dpp.BackBufferCount = 1; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.MultiSampleQuality = 0; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.hDeviceWindow = hWnd; d3dpp.Windowed = false
; d3dpp.EnableAutoDepthStencil = true; d3dpp.AutoDepthStencilFormat = D3DFMT_D24S8; d3dpp.Flags = 0; d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; /////////////////////////////// // Step 4: Create the device.(device代表的是物理顯示卡) ////////////////////////////// HRESULT hr = d3d9->CreateDevice( D3DADAPTER_DEFAULT, // primary adapter D3DDEVTYPE_HAL, // device type hWnd, // window associated with device vp, // vertex processing &d3dpp, // present parameters &device); // return created device if (FAILED(hr)) { d3d9->Release(); // done with d3d9 object return false; } else { ::MessageBox(0, L"顯示卡物件建立成功",0,0); } } d3d9->Release(); // done with d3d9 object

可能會遇到的錯誤:

錯誤型別:

無法解析的外部符號 Direct3DCreate9@4

這裡寫圖片描述
解決方案一:
在VS.NET中的專案/屬性/配置屬性/聯結器/輸入/附加依賴項中新增以下檔名,d3dx9.lib d3dxof.lib d3d9.lib winmm.lib dxguid.lib comctl32.lib 就可以了.
解決方案二:

    #pragma comment(lib,"d3d9.lib") 
    #pragma comment(lib,"winmm.lib") 
    #pragma comment(lib,"d3dx9.lib")

相關推薦

DirectX入門初始Direct3D常見問題

這篇文章主要講解如何初始化Direct3D。Direct3D初始化成功後,我們將的到一個代表顯示卡的C++物件(型別:IDrect3DDevice9)。 初始化流程圖: 完整程式碼:

註解學習初始佈局控制元件2

/** * @author anqiansong *初始化佈局 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface InitContentView { public int

樹莓派入坑指南——系統初始配置常見Q&A

筆者抱著很糾結的心態寫下了此文,僅以紀念我N刷系統的落寞。。。 本文基於RaspberryPi Model 3B,以Ubuntu-Mate(16.04.3)和Raspbian(2017-07-05-raspbian-jessie)系統配置為例。 現將常見初始

wepy學習路2-初始專案額外元件的使用

文章目錄 基礎專案生產 1、使用wepy指令生成一個空wepy專案 2、安裝npm依賴包 3、關閉eslint程式碼檢查 4、配置完成 額外元件

Java入門API的使用String 和StringBuilder類的常見方法

API:學習JAVA幫助文件;使用步驟:1.開啟API文件;2.點選左上角顯示按鈕3.點選索引標籤,在輸入框內輸入你要學習的內容;學習一個新的類的步驟:1.看類的宣告:搞清楚這個類的一個修飾情況(繼承,實現)2.看類的說明:看這個類的功能描述;3.看類的構造方法摘要:瞭解建

Java學習初始

java學習初始化塊: 分類: 1、靜態初始化塊 2、非靜態初始化塊 語法: [修飾符]{ 初始化塊邏輯 } 例子: 父類public class Block { static { Syste

類加載初始(包括靜態代碼塊講解)

round ima left line title 耗時 觸發 靜態代碼塊 cnblogs 開始我們先來看一段代碼 package classLoader; class a { public a() { System.out.println

多重繼承關系初始順序初始

java 所有 clas 屬性 配對 -- 如果 實現 硬盤 順序:父類屬性--> 父類構造方法--> 子類屬性--> 子類構造方法 初始化: 1.在創建類之前,檢查是否已加載檢查硬盤上的.class是否加載到內存中,如果沒有加載就先加載父類的文件,再加載

linux(十一)初始文件

fun ps1 史記 intern header 例如 internet $path 名稱 前面寫了很多linux的知識,其實很多都是命令的,所以要去多多的練習才能學的更好,加油為了好工作。 要麽現在懶惰,未來討飯。要麽現在努力,未來愜意。 一、初始化文件概述   1

Java基礎知識初始——初始順序

子類 初始 zab 不清楚 static urn extend rgs end 概述 在Java中所有的變量在使用前都需要初始化。如果我們不初始化,則編譯器會為變量初始化一個默認值(例如,int類型的變量的初始化默認值是0)。但是初始化的順序是什麽樣的,很多人搞不清楚(我

Framework7學習筆記初始App

筆記 需要 默認 通知欄 default 周期 routes path 定義 一:初始化應用對象 我們想要在js文件中操作app,就需要初始化一個app對象來存儲應用本身。 在初始化app時,還可以傳遞一些參數,對app進行一些個性化定制,如:主題、

spring源碼分析初始過程

源碼分析 true singleton 存在 factory 源碼 org 包含 eric 1.org.springframework.web.context.ContextLoaderListener 一個ServletContextListener,web容器啟動監聽器

jquery學習初始和獲取值

pan AS jquery UNC function jquery對象 加載 就會 獲取值 jquery在運行的時候 在界面加載完之後再加載jquery對象,jquery加載的元素就會被加載出來 $(document).ready(function(){  //這裏填寫需

Web APi入門Self-Host寄宿路由原理 【轉載】

正則表達式 查找 class ram info 服務器和客戶端 selfhost 交互 說了 前言 剛開始表面上感覺Web API內容似乎沒什麽,也就是返回JSON數據,事實上遠非我所想,不去研究不知道,其中的水還是比較深,那又如何,一步一個腳印來學習都將迎刃而解。 S

spring源碼-bean初始-1

name art array 形式 framework stat not found object 查看源   一、spring的IOC控制反轉:控制反轉——Spring通過一種稱作控制反轉(IOC)的技術促進了松耦合。當應用了IOC,一個對象依賴的其它對象會通過被動的方式

Flask初始封裝

flask __name__ man 返回值 __main__ alc imp fprot 返回 # 修改info包的init文件如下: import redis from flask import Flask from flask_session import Sessi

青蛙學Linux—系統初始init執行級

Linux系統的啟動首先從BIOS開始,接下來Linux的載入程式將核心映像載入到記憶體,進行核心初始化。在核心初始化的最後一步,就是啟動PID為1的init程序,這個程序是系統的第一個程序,負責啟動那些開機時需要啟動的服務。 大多數的Linux發行版的init系統都是和System V相容的,所以也被稱為

Java--對接微信第四篇初始底部選單

第一步、新建一些實體類: Menu>Button>ComplexButton>CommonButton /** * 選單 */ public class Menu { private Button[] button; public B

Mac上MySQL初始密碼操作

     個人在Mac上操作資料庫,遇到的啟動資料庫問題的簡單記錄     1、蘋果->系統偏好設定->最下邊點mysql 在彈出頁面中 關閉mysql服務(點選stop mysql server)    

【SpringMvc】從零開始學SpringMvc初始(一)

大家好,我們今天開始SpringMvc 這個系列,由於筆者也是安卓出身,對SpringMvc 也是接觸不久,所以,這個系列僅僅只是記錄筆者學習SpringMvc 過程中的心得,如有錯誤,歡迎指正。 在開始之前,我們需要準備一些東西,JDK、Eclipse(MyEclipse)、Tom