在过去,我已经用C ++编程语言创建了DirectX应用程序,但是,我想知道是否可以使用C编程语言来实现。
谢谢。
对的,这是可能的。 DirectX公开COM接口,C能够使用它们。尽管如此,它不会是一大堆乐趣!
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做任何特殊的事情,因为似乎有足够的宏定义你可以使用。
您可以在C中使用DirectX。它具有特定的宏来简化COM接口的使用。但是,使用C ++要容易得多。
我认为DirectX库只有一些C ++组件(自从我使用它以来已经有一段时间了,从最后我记得它包含类)。不妨让你的生活更轻松,用C ++做。
这是可能的,但是因为你缺乏C ++提供的更高级别的功能,所以你自己也更难。