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