#include <stdio.h>
#include <stdlib.h>
#include <GL/glew.h>
#include <GL/glfw3.h>
#include <glm/glm.hpp>
using namespace glm;
int main(){
if( !glfwInit() )
{
fprintf( stderr, "Failed to initialize GLFW\n" );
return -1;
}
glfwWindowHint(GLFW_SAMPLES, 4); // 4x antialiasing
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // We want OpenGL 3.3
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
// Open a window and create its OpenGL context
GLFWwindow* window; // (In the accompanying source code, this variable is global)
window = glfwCreateWindow( 1024, 768, "Tutorial 01", NULL, NULL);
if( window == NULL ){
fprintf( stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n" );
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window); // Initialize GLEW
glewExperimental=true; // Needed in core profile
if (glewInit() != GLEW_OK) {
fprintf(stderr, "Failed to initialize GLEW\n");
return -1;
}
// Ensure we can capture the escape key being pressed below
glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
do{
// Draw nothing, see you in tutorial 2 !
// Swap buffers
glfwSwapBuffers(window);
glfwPollEvents();
} // Check if the ESC key was pressed or the window was closed
while( glfwGetKey(window, GLFW_KEY_ESCAPE ) != GLFW_PRESS &&
glfwWindowShouldClose(window) == 0 );
}
Questo
SOLO per aprire una finestra contenente un contesto OpenGL.
Come noterai dalla quantita' di codice, utilizzare OpenGL non e' proprio semplice.
Minimo, minimo ci sono 1600 pagine da leggere: 800 per i concetti fondamentali ed altre 800 per l'implementazione degli shader.
Di che sto parlando?
Appunto!
OpenGL non e' l'unica libreria esistente: e' molto potente perche' permette di accedere direttamente alla scheda grafica.
Ci sono librerie molto piu' semplici da utilizzare.
In ogni caso, per poter lavorare con librerie del genere, devi saper programmare e conoscere i concetti della grafica 2D e 3D, quindi matematica, trigonometria, concetti di algebra lineare (cosa e' una matrice di rotazione?)
Insomma, un bel po' di cose.
Ti consiglio di andare per gradi.
Inizia con imparare a programmare con un linguaggio di programmazione tra python, java e C++ (tutti prevedono librerie per la grafica 2D e 3D).
Alla grafica 3D ci arriverai dopo che ti sarai fatto le ossa con la programmazione.
Giusto per darti un'idea di quello che si puo' fare con OpenGL:
1) con una libreria che usa solo la CPU, in Python, riesci a processare in tempo reale circa un migliaio di triangoli
2) con OpenGL circa 10.000.000 (dieci milioni!!!!)
e questo usando una scheda grafica per portatile con circa 200 core.
Immagina cosa puoi fare con una NVIDA Titan che di core ne ha 3000