-1
$\begingroup$

I had this doubt in my head for several months and have been unable to find an answer anywhere on internet.

I know what OpenGL, DirectX, Vulkan, Metal, etc... are, I already know what they are used for (literally in any multimedia software application).

My question is "in the real world when people work directly with a graphical API (eg: DirectX)?".

For example, if I want to create a game I will use a game engine, if I want to create special effects I will use a program for VFX, if I want to create an animated scene with different 3D models I will use something like Blender.

What are the situations where a person could say "Ok, this problem can only be solved by writing my own software with DirectX/C++"?

My question arises from the fact that I would like to learn DirectX (later Vulkan also) as a matter of curiosity but I know that graphic programming is a demanding topic that requires a lot (a lot!) of time.

I work for a company most of my day and since the salary is quite low (especially because at 21yo nobody takes you seriously), in the evening I dedicate myself to secondary activities in order to earn something more. I can't find a good reason to stop dedicating myself to these activities to study something that will not lead me to any type of business.

In my country (Italy) there are some (not a lot) job offerings concerning graphic programming but all require a degree in Metematics/Physics, which I don't have.

So, in summary, what are the situations where you need to "get your hands dirty" with a graphical API (eg: DirectX) instead of using a tool already made?

I know there are big game companies that for example reinvent the wheel (they write the rendering engine from 0) because they will pay off the costs and it is not convenient for them to pay for an engine already made. This environment doesn't interest me much because it certainly cannot lead to an individual business.

Other situations where you work directly with a graphical API is the world of simulations, but there I imagine it is more a matter of mathematics and physics, not of graphics.

I'd like to read about some experience of those who work/worked with a graphic API and what your role was in the industry. I'd also like to read about someone who has his own business that somehow relates to a graphical API.

Thanks a lot to everyone :)

$\endgroup$
  • 3
    $\begingroup$ Someone has to write and maintain the engines! thats at least one use! ;)... Just like anything in the software world, there are varying levels of abstraction for a developer to use (i.e high/low level language, toolkits/engines/libs etc). This is the same with graphics programming... you could be close to the metal (Vulkan), you can go slightly higher (opneGL) or you could use something that uses one or many other API's. Everytime you go higher, you absolve yourself of a little control/reposonsibility and possibly performance (usually, but not always)... thats the trade off. $\endgroup$ – lfgtm May 10 at 22:24
  • $\begingroup$ Also, mathematics (matrix/geometry theory) is pretty much a must in graphics programming. You won't get far without it. $\endgroup$ – lfgtm May 10 at 22:25
  • $\begingroup$ "This environment doesn't interest me much because it certainly cannot lead to an individual business." Why do these APIs need to serve the needs of "an individual business"? This question overall seems quite opinion-based. $\endgroup$ – Nicol Bolas May 11 at 0:17
  • $\begingroup$ The question is the same shape is, "What is the point of writing any software? There is already lots of software that exists I could use." Or indeed, "What is the point of writing? Things have already been written." I can no more enumerate every use for OpenGL than I can list every novel that still needs to be written. $\endgroup$ – wrosecrans May 11 at 1:28
  • $\begingroup$ Since you are learning graphics, my advice is to just go for Vulkan directly and don't waste time on directx. The latter is a vendor lock-in API while the former is quite open and cross platform. Besides, dx11 is ancient technology, and dx12 is pretty much the same as Vulkan, except only limited to windows, so just go Vulkan directly. (I'm a graphics developer at Google). $\endgroup$ – Shahbaz May 11 at 3:41
4
$\begingroup$

This is a similar question to following: When do you need to cook? You can go to a restaurant. Why would you need to know woodworking? You can buy things from a shop.

There are two answers here

  1. In order for you to claim ownership on some tech. You need to build it. This can be simply because you have chosen to sell a competing product or need to lower your licensing fees.

    Note you dont have to be big to benefit from this.

  2. You have custom needs that are not being met by other things. Even if you mainly work in a engine by others you may still need to generate some form of asset or shader to handle some aspect.

    Not because you exactly might need it but it makes the product better or it mskes your life easier. Also: If you dont practice then you can never recognize when you could have help in the custom thing.

It is really hard to come up with concrete situations where you need either. Because once that situation arises it gets snatched up by someone so you nolonger need it.

The thing is the world isnt as ready as you think. And technology has a very nasty habit of dropping you entirely when you need something more. You might suddenly realize that because you stepped slightly out of bounds of your tech you now need to implement a very large chunk of the system since your not covered by their legal framework or their particular implementation does not extend neatly.

There is also a third option. But you have dismissed it out of hand:

  1. Because you can! I mean ive done a lot of things with this principle.

    But if you mever do anything like this you might not be invited to do so in the future

PS: None of this is valid fuel for saying i dont need to learn this. Even if you never use stuff like this knowing it can be done can be extremely valuable. Learning more makes you undertand what can be done better.

| improve this answer | |
$\endgroup$
  • $\begingroup$ thank you, I really appreciated your explanation, your 2 answers are something that made me reflect, also on other types of projects. Furthermore, you made me understand how I had completely missed a fundamental point: you cannot understand what a tool is for if you don't know it and you don't know anything about its environment. $\endgroup$ – lorenzo_campanile May 12 at 20:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.