Yes, it's not easy but I think you should start with learning some C/C++ first.
C++ versions have many iterations by today and it evolved into an overcomplicated bloated language which is not even a language anymore but a framework in my opinion because of the std library that became de facto part of nowadays C++. (If I want to be snarky, you'd better not even add two numbers without std or some other template magic if you don't want experts making fun of your code. 🙄)
I'd recommend C++ '03 first, it's old enough to relativaly easily learn its features and it's also enough for programming Win32 or COM like DirectX.
(dgVoodoo itself is mostly C++ 03, except internal D3D12 codes where I use variadic templates and lambdas).
And, if you focus on dgVoodoo then there is DX12 which is not an easy API (as an extra, I think it even requires some minimal Win32 knowledge at least). Not ideal for beginners, so first I'd recommend understanding the classic GPU pipeline without all modern fancy shaders and features (e.g. DX9 level pipeline, transformations, etc.). If it's done then I could recommend D3D12 samples themselves to study. "Hello Triangle" and such that demonstrates rendering simple polygons with simple shaders. (Shaders require HLSL but that's not that complicated, a C-like language with vector types). Basically that's what needed for the dgV D3D12 presentation hook addon. When 2 triangles, forming a quad, are drawn with some pixel shader then you just have to experiment the shader itself. 😀