过去我用C++编程语言创建了DirectX应用程序,但是我想知道是否可以使用C编程语言来完成。
谢谢。
Open Watcom C/C++编译器附带有DirectX示例应用程序,包括C ++和C。两者都可用,并分别在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做任何特殊处理,因为已经定义了足够的宏,您只需使用即可。
是的,这是可能的。DirectX公开了一个COM接口,C语言可以使用它们。不过,这可能并不是一件非常有趣的事情!
你可以在C语言中使用DirectX。它有特定的宏来简化COM接口的使用。不过,使用C++会更加容易。
我认为DirectX库有一些仅限于C++的组件(我已经有一段时间没有使用它了,从我上次记得它包含类)。最好还是用C++来简化你的生活。
1
更少的隐式代码。 2
更强的保证。 3
更成熟的工具。 4
更好的代码分析。 5
更好的互操作性。我相信还有更多的原因,但如果你关心在阅读一行代码时能够发现错误,那么你不可能希望使用C ++。 - IInspectable这是可能的,但因为你缺乏C++提供的高级函数,所以你让自己更难了。