【发布时间】:2019-02-27 18:52:46
【问题描述】:
过去我用 C++ 编程语言创建了 DirectX 应用程序,但是,我想知道是否可以使用 C 编程语言来做到这一点。
谢谢。
【问题讨论】:
-
仅限 C 的限制是否有原因?
过去我用 C++ 编程语言创建了 DirectX 应用程序,但是,我想知道是否可以使用 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 做任何特别的事情,因为似乎已经定义了足够多的宏供您使用。
【讨论】:
是的,这是可能的。 DirectX 公开了一个 COM 接口,而 C 能够使用它们。但这不会是一整艘船的乐趣!
【讨论】:
您可以在 C 中使用 DirectX。它具有特定的宏来简化 COM 接口的使用。但是,使用 C++ 要容易得多。
【讨论】:
我认为 DirectX 库有一些仅限 C++ 的组件(我已经有一段时间没有使用它了,从上次我记得它包含类)。不妨用 C++ 让您的生活更轻松一些。
【讨论】:
这是可能的,但是由于您缺少 C++ 提供的高级功能,您自己就更难了。
【讨论】: