2011-01-14 32 views
4

在過去,我用C++編程語言創建了DirectX應用程序,但是,我想知道是否可以使用C編程語言來執行此操作。C中的DirectX編程?

謝謝。

+0

是否存在僅限C的限制的原因? – 2011-01-14 22:04:18

回答

10

是的,這是可能的。 DirectX公開一個COM接口,C能夠使用它們。雖然這不會是一船樂趣!

+1

我試過了。你習慣了,但它仍然不舒服或容易。 – dreamlax 2011-01-14 21:23:21

+0

這種方式也是可能的,但正如大衛所說,這根本不會有趣。如果你嘗試採取這種方式,祝你好運。 – 2011-01-14 21:23:39

0

我認爲DirectX庫有一些僅用於C++的組件(它已經有一段時間了,因爲我已經使用了它,從上次我記得它包含類)。不妨讓你的生活更輕鬆一些,並用C++來完成。

2

您可以在C中使用DirectX。它具有特定的宏來簡化COM接口的使用。但是,使用C++要容易得多。

5

Open Watcom C/C++編譯器在C++和C中都附帶了DirectX示例應用程序。它們分別在OW 1.9中的WATCOM\samples\directx\cppWATCOM\samples\directx\c之下。

這是什麼代碼看起來像在C++:

hr = d3d->GetDeviceCaps(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dcaps9); 
hr = d3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm); 
hr = d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, game_window, D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &d3dpp, &d3d_dev); 

而且在C:

hr = IDirect3D9_GetDeviceCaps(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dcaps9); 
hr = IDirect3D9_GetAdapterDisplayMode(d3d, D3DADAPTER_DEFAULT, &d3ddm); 
hr = IDirect3D9_CreateDevice(d3d, D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, game_window, D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, &d3dpp, &d3d_dev); 

你不需要做什麼特別在C COM,因爲似乎足夠的宏定義了你可以使用。