2011-01-14 5 views
4

이전에는 C++ 프로그래밍 언어로 DirectX 응용 프로그램을 만들었지 만 C 프로그래밍 언어를 사용하여이 작업을 수행 할 수 있는지 알고 싶습니다.C로 DirectX 프로그래밍?

감사합니다.

+0

C 전용 제한이 있습니까? –

답변

10

예 가능합니다. DirectX는 COM 인터페이스를 노출하고 C는이를 소비 할 수 있습니다. 그것은 재미의 전체의 보트로드가 아닐 것이다!

+1

나는 시도했다. 당신은 그것에 익숙해졌지만 여전히 즐겁지도 쉬지도 않습니다. – dreamlax

+0

이 방법은 가능하지만 데이비드는 재미가 전혀 없을 것이라고 언급했습니다. 이 길을 택하려고한다면 행운을 빈다. –

0

DirectX 라이브러리에는 C++ 전용 구성 요소가 있습니다 (사용 이후부터 사용하고 있으며 클래스를 포함하고 있음을 기억합니다). 인생을 좀 더 쉽게 만들고 C++로 할 수 있습니다.

+2

COM으로 모든 작업을 수행 할 수 있습니다. –

+0

당신이 할 수 있다고해서 때때로 당신이해야한다는 것을 의미하지는 않습니다. 그가 원한다면 그는 앞으로 나아갈 수 있습니다. –

+0

@Jesus hehe 참으로. 최근에 C로 COM 인터페이스를 구현해야했습니다. 확실히 머리가 아플 수 밖에 없었습니다. –

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 특별한 작업을 수행 할 필요가 없습니다 당신이 사용할 수있는 충분한 매크로가 정의되었습니다.