What are the good choices to start basic graphics programming in C/C++ (both 2D and 3D) for a learner? I want to try out things given in the book (3D math primer).
Obviously I don't want to use OpenGL.
I have a machine that has Linux (Debian). What are my choices on Linux to start with? QT or GTK or something else?
Edit: I don't want to use OpenGL because it does most of the interesting work for me. Like, rotation, projection etc. I want to learn those things.
Use OpenGL. You can either use legacy OpenGL and leave the transformation matrices as identity, and do your own rotation projection etc. before calling glVertex
*, or use modern OpenGL with shaders, where you'll have to implement those features yourself in the vertex shader.
For 2D Graphics I recommend SDL Library. It is simple but powerful. The library APIs are native to C/C++ but supports all languages you can think of. You don't have to use OpenGL, but SDL supports it if you decide to use it later on. It also supports most audio and video files. I find it great to work with for a beginner game developer.
Go through the tutorials in the following link. You don't need any graphics library
http://www.codermind.com/articles/Raytracer-in-C++-Introduction-What-is-ray-tracing.html
After doing the tutorials then rewrite the ray tracer in OpenCL and use SDL to display the pixel buffer. Impress your friends with real-time global illumination who think OpenGL is the only way to do graphics.
Take a look at tinyrenderer.
In this series of articles, I want to show the way OpenGL works by writing its clone (a much simplified one). Surprisingly enough, I often meet people who cannot overcome the initial hurdle of learning OpenGL / DirectX. Thus, I have prepared a short series of lectures, after which my students show quite good renderers.