Программирование DirectX в C?

В прошлом я создал приложения DirectX на языке программирования C ++, однако мне хотелось бы знать, можно ли это сделать с помощью языка программирования C.

Благодарю.

    Да, это возможно. DirectX предоставляет COM-интерфейс, и C способен их использовать. Хотя это не будет большой нагрузкой на лодку!

    Компилятор Open Watcom C / C ++ поставляется с примерами приложений DirectX как на C ++, так и на C. Оба работают. Они находятся под WATCOM\samples\directx\cpp и WATCOM\samples\directx\c соответственно в OW 1.9.

    Вот как выглядит код в 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); 

    Вам не нужно делать что-либо особенное с COM в C, поскольку, похоже, достаточно макросов, которые вы можете использовать.

    Вы можете использовать DirectX в C. Он имеет определенные macros, чтобы упростить использование COM-интерфейса. Однако использовать C ++ гораздо проще.

    Я думаю, что в библиотеках DirectX есть некоторые только компоненты C ++ (прошло некоторое время с тех пор, как я использовал его, и с последнего момента я помню, что он содержит classы). Возможно также сделать вашу жизнь немного легче и сделать это на C ++.

    Это возможно, но из-за того, что вам не хватает функций более высокого уровня, C ++ предоставляет вам сделать это сложнее для себя.

    Я нашел здесь учебник , посвященный DirectX в том, что кажется C (некоторые из них оплачиваются, но первые несколько базовых примеров бесплатны).