Se sei interessato a imparare le basi della Computer Grafica, dovrai iniziare a imparare le basi dell'Algebra Lineare. Concetti come vettori, matrici e trasformazioni costituiscono le basi della computer grafica. Per esempio, quando premete un pulsante sul vostro controller per ruotare un personaggio del gioco sullo schermo, state applicando una trasformazione rotazionale al personaggio del gioco.
Dopo che avete una buona conoscenza dell'algebra lineare, avrete bisogno di imparare una API che vi dia accesso alla comunicazione con la GPU. Una API molto popolare è OpenGL. OpenGL non è un linguaggio di programmazione, è un'API. Un'API è un intermediario software che rende possibile l'interazione tra diversi programmi. Nel caso di OpenGL, permette l'interazione tra la CPU e la GPU.
OpenGL può essere pensato come un lato client e un lato server. Il lato client si occupa di caricare i dati nei buffer OpenGL e poi di trasferirli alla GPU. Cercate di imparare i buffer OpenGL, gli oggetti Vertex Buffer, gli oggetti Vertex Array e gli oggetti Texture. Imparate come caricare i dati in questi buffer e il processo di rendering OpenGL.
Il lato server consiste in shader. Uno shader è un piccolo programma sviluppato dall'utente che vive nella GPU. Uno shader è scritto in uno speciale linguaggio grafico chiamato OpenGL Shading Language (GLSL). Uno shader prende il posto di due fasi importanti nella pipeline OpenGL: "Per-Vertex Processing" e "Per-Fragment Processing".
Quindi le basi per imparare la computer grafica sono:
- Algebra lineare
- Come caricare i dati nei buffer OpenGL
- Shaders
La computer grafica non può essere imparata di notte. Ci vuole tempo. C'è molto da imparare e l'unico modo per farlo è fare pratica ogni singolo giorno. Have fun.
Update 11/27/15
In case you are interested in learning more, here is a list of OpenGL articles and projects which I have written on my blog. I hope you find them useful. Enjoy
Beginner's Level
- What is OpenGL
- What is the purpose of the OpenGL API
- Understanding OpenGL Objects
- Visualizing OpenGL Objects
- Loading data into OpenGL
- OpenGL Rendering Pipeline
- Starting the Rendering Process in OpenGL
- Rendering efficiently with OpenGL
- Vertex Attribute Purpose
- Brief talk about OpenGL Textures
- What is a Vertex Shader
- What is a Fragment Shader
Intermediate Level
- What are binding points in OpenGL
- What are Vertex Array Binding points
- Compiling, Attaching and Linking Shaders
- How does the Vertex Shader receives data
- How to pass data from shader to shader
- what is the purpose of a Vertex Attribute in OpenGL
- What are Tessellation Shaders
- What are Geometry Shaders
OpenGL Projects
- Rendering a character using OpenGL ES in iOS
- Applying texture to a character using OpenGL ES in iOS
- How to use OpenGL ES Shaders
- How to rotate a character using OpenGL ES in iOS
- How to apply lighting to a character using OpenGL ES in iOS
- How to apply a Skybox (Cube Map) using OpenGL ES in iOS
- How to add a Normal Map using OpenGL ES in iOS