2011-01-14 14 views
4

これまで、C++プログラミング言語でDirectXアプリケーションを作成しましたが、Cプログラミング言語を使用してDirectXアプリケーションを作成することが可能かどうかを知りたいと思います。CでのDirectXプログラミング?

ありがとうございました。

+0

C限定の理由はありますか? –

答えて

10

はい、可能です。 DirectXはCOMインターフェイスを公開し、Cはそれらを消費することができます。しかし、それは楽しみの全体のボートの負荷ではありません!

+1

私は試しました。あなたはそれに慣れていますが、それでも楽しくて簡単ではありません。 – dreamlax

+0

この方法も可能ですが、ダビデはこれが全く楽しいことではないと言いました。あなたがこの道を踏み出そうとすれば、最高の運があります。 –

0

DirectXライブラリにはC++専用のコンポーネントがいくつかあります(これは私が使用してからしばらく経ちましたが、最後にはクラスが含まれていることを覚えています)。あなたの人生を少しでも楽にして、C++でやってください。

+2

COMですべて実行できます。 –

+0

あなたができることはちょうど時々あなたがするべきではありません。彼がしたい場合は、彼は先にheheに行くことができます。 –

+0

@Jesus hehe確かに。私は最近、CでCOMインターフェースを実装しなければなりませんでした。確かに頭が痛いです。 –

2

CでDirectXを使用できます。COMインターフェイスの使用を簡略化する特定のマクロがあります。しかし、C++を使う方がはるかに簡単です。

5

Open Watcom C/C++コンパイラには、C++とCの両方でDirectXサンプルアプリケーションが付属しています。どちらも動作します。それらはOW 1.9においてそれぞれWATCOM\samples\directx\cppおよびWATCOM\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と特別なことをする必要はありませんあなたが使用できるだけのマクロが定義されています。