DirextX 11遊戲開發 1

2021-10-16 11:59:52 字數 3325 閱讀 1775

在執行dx11的官方例項時,經常會出現無法解析的外部符號__imp__cocreat…之類的錯誤,這是因為dx的一些函式呼叫了windows sdk中的系統函式,因此需要鏈結相關的庫。

x3daudio.lib

d3dx10d.lib

d3dx9d.lib

dxerr.lib

dxguid.lib

winmm.lib

comctl32.lib

kernel32.lib

user32.lib

wsock32.lib

advapi32.lib

shell32.lib

gdi32.lib

legacy_stdio_definitions.lib

ole32.lib

在執行龍書(dx11)時,第一張向量包含的標頭檔案#include會報錯,官方對其原因進行了解釋:xnamath.h原本是位於directx sdk的乙個數學庫,但是現在windows sdk包含的數學庫已經拋棄掉原來的xnamath.h,並演變成了現在的directxmath.h。其實本質上並沒有多大區別,只是將原來的xna數學函式移植到了這裡,並多了一層命名空間directx

因此需要將xnamath.h替換為directxmath.h,並且在變數型別之前巢狀命名空間。如:

#include

// for float definition

//#include

#include

// 替換,並在下面向量等前面新增directx::命名空間

#include

using

namespace std;

// overload the "<

// output xmvector objects.

ostream&

operator

<<

(ostream& os, directx::fxmvector v)

intmain()

directx::xmvector p = directx::

xmvectorset

(2.0f

,2.0f

,1.0f

,0.0f);

directx::xmvector q = directx::

xmvectorset

(2.0f,-

0.5f

,0.5f

,0.1f);

directx::xmvector u = directx::

xmvectorset

(1.0f

,2.0f

,4.0f

,8.0f);

directx::xmvector v = directx::

xmvectorset(-

2.0f

,1.0f,-

3.0f

,2.5f);

directx::xmvector w = directx::

xmvectorset

(0.0f

, directx::xm_pidiv4, directx::xm_pidiv2, directx::xm_pi)

; cout <<

"xmvectorabs(v) = "

<< directx::

xmvectorabs

(v)<< endl;

cout <<

"xmvectorcos(w) = "

<< directx::

xmvectorcos

(w)<< endl;

cout <<

"xmvectorlog(u) = "

<< directx::

xmvectorlog

(u)<< endl;

cout <<

"xmvectorexp(p) = "

<< directx::

xmvectorexp

(p)<< endl;

cout <<

"xmvectorpow(u, p) = "

<< directx::

xmvectorpow

(u, p)

<< endl;

cout <<

"xmvectorsqrt(u) = "

<< directx::

xmvectorsqrt

(u)<< endl;

cout <<

"xmvectorswizzle(u, 2, 2, 1, 3) = "

<< directx::

xmvectorswizzle

(u,2,2

,1,3

)<< endl;

cout <<

"xmvectorswizzle(u, 2, 1, 0, 3) = "

<< directx::

xmvectorswizzle

(u,2,1

,0,3

)<< endl;

cout <<

"xmvectormultiply(u, v) = "

<< directx::

xmvectormultiply

(u, v)

<< endl;

cout <<

"xmvectorsaturate(q) = "

<< directx::

xmvectorsaturate

(q)<< endl;

cout <<

"xmvectormin(p, v = "

<< directx::

xmvectormin

(p, v)

<< endl;

cout <<

"xmvectormax(p, v) = "

<< directx::

xmvectormax

(p, v)

<< endl;

return0;

}

第一張向量的執行結果為:

遊戲開發日誌 1

很久沒有在自己的blog發表文章了,感覺有點過意不去。於是今天試過n次密碼後終於以管理員的身份進入了久違的專欄。自己的記性是越來越差了!掐指一算,進入遊戲開發這個行業已經有一年半的時間了,想當初剛進公司的時候,還是乙個懵懂的頑童,現在也可算是久經沙場啦。原來在一家台灣的製造企業裡打工,不知不覺過了兩...

unity RPG遊戲開發 (1)

先在專案中按以下順序建立資料夾,這樣這個專案的初步框架就ok了。匯入相關資源 1 將所需貼 件導texture,一般為png檔案,並在unity中做成atlas 2 其餘檔案有音訊,字型,特效粒子,材質,模型,相關外掛程式 設定camera 3 設定好camara的cullingmask 與 pro...

phaser遊戲開發入門1

使用phaser開發十幾款遊戲,感覺這個引擎不錯,給大家分享下。demo位址 phaser這個引擎封裝做的比較好,常用的物理引擎都有封裝,音訊方面也特別給力,開發起來就乙個字 快 學習一款遊戲引擎只需要做的事情有 1 看他的demo演示,看他能做什麼 phaser 能做2d遊戲開發,2 看他的文件和...