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