In the past I have created DirectX applications in the C++ programming language, however, I would like to know if it is possible to do this using the C programming language.
Thanks.
In the past I have created DirectX applications in the C++ programming language, however, I would like to know if it is possible to do this using the C programming language.
Thanks.
Yes it is possible. DirectX exposes a COM interface and C is capable of consuming them. It won't be a whole boat load of fun though!
The Open Watcom C/C++ compiler comes with DirectX sample applications in both C++ and C. Both work. They are under WATCOM\samples\directx\cpp
and WATCOM\samples\directx\c
respectively in OW 1.9.
This is what the code looks like in 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);
And in 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);
You don't need to do anything special with COM in C as there seem to be enough macros defined that you can just use.
Yes it is possible. DirectX exposes a COM interface and C is capable of consuming them. It won't be a whole boat load of fun though!
You can use DirectX in C. It has specific macros to simplify the use of the COM interface. However, it's much easier to use C++.
I think that the DirectX libraries have some C++ only components (it's been a while since I've used it and from last I remember it contains classes). Might as well make your life a little easier and do it in C++.
1
Less invisible code. 2
Stronger guarantees. 3
More mature tools. 4
Better code analysis. 5
Better interoperability story. I'm sure there are more reasons, but if you care about being able to spot errors when reading a line of code, you cannot possibly hope to use C++. –
Westerfield It is possible, but because you lack the higher level functions C++ provides you are making it harder for yourself.
© 2022 - 2024 — McMap. All rights reserved.