DirectX программирование на C? - PullRequest
5 голосов
/ 15 января 2011

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

Ответы [ 5 ]

11 голосов
/ 15 января 2011

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

7 голосов
/ 01 ноября 2011

Компилятор 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, так как, похоже, достаточно макросов, которые вы можете просто использовать.

2 голосов
/ 15 января 2011

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

0 голосов
/ 02 июня 2018

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

0 голосов
/ 15 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...