Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where can I learn how to interface with a graphics card using C++?

Tags:

c++

gpu

opengl

glsl

3d

I'm learning c++ right now and I'd like to start interfacing with a graphics card and play with the basics of 3d graphics. I haven't found it in my book or in internet queries, and I actually have absolutely no idea where to start with this. Can c++ code run on a graphics card once it is compiled? I understand that I access GPU processing through OpenGL but I'm unclear whether this is just a library for accessing through c++ (and probably other languages) to pass functions to the GPU, or if it is specific to GLSL. So what is OpenGL, and how can I use it in conjunction with c++ in order to pass processing to the GPU? Are there other more direct or flexible ways to work with C++ and a graphics card?

like image 566
hedgehogrider Avatar asked Nov 13 '10 16:11

hedgehogrider


2 Answers

OpenGL is a library. Your C++ code, which compiles into machine code (for your CPU, not GPU), calls OpenGL functions, which send data to your graphics card (GPU). The graphics card interprets that data, and uses it to do whatever you've asked it to do. The GPU does not run any of your C++ code.

GLSL (OpenGL Shading Language) is a language used to instruct what the GPU's shaders do. Note that the name is a bit of a misnomer, because code written in shading languages do a lot more than shading nowadays. Typically, you will write your GLSL code much like you write your C++ code, then use OpenGL calls to compile the GLSL code, and then use more OpenGL calls to instruct the CPU to use the shader programs.


CPU

C++ code calls OpenGL functions calls Graphics driver code, which transmits instructions to the GPU through hardware.

GPU

Interprets hardware signals received from the graphics driver to run its own internal programs. This may include compiled GLSL programs, which are also sent from CPU in the same way.


Note: You can replace "Open GL functions" with "DirectX functions" and "GLSL" with another shading language and the diagram is the same.

like image 103
Peter Alexander Avatar answered Nov 13 '22 01:11

Peter Alexander


OpenGL and DirectX do the interfacing to the graphics card for you.

You can write the low level code yourself, but I'd recommend getting an understanding of the basics first.

Once you've done that you could look at writing the graphics drivers yourself, but don't expect to beat the performance of the card manufacturers teams of developers.

like image 45
ChrisF Avatar answered Nov 13 '22 01:11

ChrisF