IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

opengl vbo shader


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut opengl vbo shader
    bonjour,

    j'essaie de faire un programme en utilisant opengl et les shader, mais j'obtiens une fenêtre vide lorsque j'utilise mon programme et je ne vois pas ce qui cloche.

    Voici mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    #include <GL/glew.h>
    #include <GL/freeglut.h>
    #include <iostream>
    #include <fstream>
     
    unsigned int vertexID, fragmentID, programID;
    int positionIndex, colorIndex;
    GLuint bufferVBO[3];
     
    GLfloat cubeArray[24] = {
    1.0f, 0.0f, 0.0f, -1.0f, 1.0f, -1.0f,
    1.0f, 0.0f, 1.0f, -1.0f, -1.0f, -1.0f,
    1.0f, 1.0f, 1.0f, -1.0f, 1.0f, 1.0f,
    0.0f, 0.0f, 1.0f, -1.0f, -1.0f, 1.0f
    };
     
    GLfloat colorArray[24] = {
    0.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f,
    0.0f, 1.0f, 1.0f, 1.0f, -1.0f, 1.0f,
    1.0f, 1.0f, 0.0f, 1.0f, 1.0f, -1.0f,
    1.0f, 1.0f, 1.0f, 1.0f, -1.0f, -1.0f
    };
     
    GLuint indiceArray[36] = {
    0,1,2,2,1,3,
    4,5,6,6,5,7,
    3,1,5,5,1,7,
    0,2,6,6,2,4,
    6,7,0,0,7,1,
    2,3,4,4,3,5
    };
     
    //chargemetn des source d'un shader
    char* loadSource(const char *filename)
    {
    	char *src = NULL;   /* code source de notre shader */
    	FILE *fp = NULL;    /* fichier */
    	long size;          /* taille du fichier */
    	long i;             /* compteur */
     
     
    	fp = fopen(filename, "r");
    	if(fp == NULL)
    	{
    		fprintf(stderr, "impossible d'ouvrir le fichier '%s'\n", filename);
    		return NULL;
    	}
     
     
    	fseek(fp, 0, SEEK_END);
    	size = ftell(fp);
     
    	rewind(fp);
     
    	src = new char(size+1);
    	if(src == NULL)
    	{
    		fclose(fp);
    		fprintf(stderr, "erreur d'allocation de memoire!\n");
    		return NULL;
    	}
     
    	for(i=0; i<size; i++)
    		src[i] = fgetc(fp);
    	src[size] = '\0';
    	fclose(fp);
     
    	return src;
    }
     
     
    void reshapeGL(int h, int w)
    {
     
    }
     
    //affichage opengl
    void displayGL(void)
    {
    	glEnableClientState(GL_VERTEX_ARRAY);
    	glEnableClientState(GL_INDEX_ARRAY);
    	glBindBuffer(GL_ARRAY_BUFFER, bufferVBO[0]);
    	glEnableVertexAttribArray(positionIndex);
    	glVertexAttribPointer(positionIndex, 3, GL_FLOAT, GL_FALSE, 0, &cubeArray[0]);
     
    	glBindBuffer(GL_ARRAY_BUFFER, bufferVBO[1]);
    	glEnableVertexAttribArray(colorIndex);
    	glVertexAttribPointer(colorIndex, 3, GL_FLOAT, GL_FALSE, 0, &colorArray[0]);
     
     
    	glBindBuffer(GL_ARRAY_BUFFER, bufferVBO[2]);
    	glDrawElements(GL_TRIANGLES, 36, GL_UNSIGNED_INT, &indiceArray[0]);
     
    	glDisableVertexAttribArray(colorIndex);
    	glDisableVertexAttribArray(positionIndex);
     
    	glDisableClientState(GL_VERTEX_ARRAY);
    	glDisableClientState(GL_INDEX_ARRAY);
    	glFlush();
    }
     
    //initialisation opengl
    void initGL(int argc, char *argv[])
    {
    	glutInit(&argc, argv);
    	glutInitContextVersion(3,3);
    	glutInitContextFlags (GLUT_FORWARD_COMPATIBLE | GLUT_DEBUG);
    	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    	glutInitWindowSize(640,480);
    	glutInitWindowPosition(50,50);
    	glutCreateWindow("test shader");
    	glutDisplayFunc(displayGL);
    	glutReshapeFunc(reshapeGL);
    }
     
    int main(int argc, char *argv[])
    {
    	int OpenGLVersion[2];
    	GLint erreurCompilation = 0, tailleErreur = 0;
    	char *erreur = NULL;
     
    	//intialisation
    	initGL(argc,argv);
    	GLenum err=glewInit();
    	if(err!=GLEW_OK)
    	{
    		std::cout << "glewInit failed, aborting." << std::endl;
    		exit(1);
    	}
    	glGetIntegerv(GL_MAJOR_VERSION, &OpenGLVersion[0]);
    	glGetIntegerv(GL_MINOR_VERSION, &OpenGLVersion[1]);
    	std::cout << "OpenGL version = " << OpenGLVersion[0] << ".";
    	std::cout << OpenGLVersion[1] << std::endl << std::endl;
     
    	GLenum errorState = GL_NO_ERROR;
     
    	glClearColor(0.0,0.5,0.0,1.0);
     
    	glClearDepth(1.0);
    	glDepthFunc(GL_LESS);
    	glEnable(GL_DEPTH_TEST);
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
     
    	gluPerspective(45.0f,(GLfloat)640/(GLfloat)480,0.1f,100.0f);
    	glMatrixMode(GL_MODELVIEW);
     
    	//creation des shaders
    	vertexID = glCreateShader(GL_VERTEX_SHADER);
    	const char * vertexSource = loadSource("shader/test.vert");
    	glShaderSource(vertexID, 1, &vertexSource, NULL);
     
     
    	fragmentID = glCreateShader(GL_FRAGMENT_SHADER);
    	const char * fragmentSource = loadSource("shader/test.frag");
    	glShaderSource(fragmentID, 1, &fragmentSource, NULL);
     
    	//compilation des shaders
    	glCompileShader(vertexID);
    	glCompileShader(fragmentID);
    	glGetShaderiv(vertexID, GL_COMPILE_STATUS, &erreurCompilation);
    	if(erreurCompilation != GL_TRUE)
    	{
     
    		glGetShaderiv(vertexID, GL_INFO_LOG_LENGTH, &tailleErreur);
     
    		erreur = new char(tailleErreur + 1);
     
    		glGetInfoLogARB(vertexID, tailleErreur, &tailleErreur, erreur);
    		printf("%s\n\n", erreur);
     
    		return -1;
    	}
     
    	//creation du programme
    	programID = glCreateProgram();
     
    	//liaison des shader au programme
    	glAttachShader(programID, vertexID);
    	glAttachShader(programID, fragmentID);
    	glLinkProgram(programID);
     
    	//activation des tableau de vertex et index
    	glEnableClientState(GL_VERTEX_ARRAY);
    	glEnableClientState(GL_INDEX_ARRAY);
     
    	//creation de vbo
    	glGenBuffers(3, bufferVBO);
     
    	//mise en tampon des buffers
    	glBindBuffer(GL_ARRAY_BUFFER, bufferVBO[0]);
    	glBufferData(GL_ARRAY_BUFFER, sizeof(cubeArray), cubeArray, GL_STATIC_DRAW);
    	positionIndex = glGetAttribLocation(programID, "invertex");
    	glBindAttribLocation(programID, positionIndex, "invertex");
     
    	glBindBuffer(GL_ARRAY_BUFFER, bufferVBO[1]);
    	glBufferData(GL_ARRAY_BUFFER, sizeof(colorArray), colorArray, GL_STATIC_DRAW);
    	colorIndex = glGetAttribLocation(programID, "incolor");
    	glBindAttribLocation(programID, colorIndex, "incolor");
     
    	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferVBO[2]);
    	glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indiceArray), indiceArray, GL_STATIC_DRAW);
     
    	//verification des index
    	std::cout << "valeur des index : " << positionIndex << "  " << colorIndex << std::endl;
     
     
    	//utilisation du programme
    	glUseProgram(programID);
     
    	//boucle opengl
    	glutMainLoop();
     
    	glDisableClientState(GL_VERTEX_ARRAY);
    	glDisableClientState(GL_INDEX_ARRAY);
    }


    Mercid'avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Je sais pas si tu as avancé depuis, mais une fonction reshapeGL vide ça me fait bizarre.

    Sinon, il manque le code des shaders pour pouvoir t'aider. D'ailleurs, sans shaders, l'affichage est ok ?

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    non sans les shader ça n'affiche pas plus de choses

    vertex
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #version 330
     
    in vec3 invertex;
    in vec3 incolor;
     
    smooth out vec4 color;
     
    void main(void)
    {
        gl_Position = vec4(invertex, 1.0);
        gl_Color = vec4(incolor, 1.0);
    }
    fragment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #version 330
     
    smooth in vec4 color;
     
    void main(void)
    {
        gl_FragColor = color;
    }

  4. #4
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Je commencerai déjà par avoir un affichage correcte sans les shaders, histoire de voir si les VBO sont correctement crée, remplis, etc...

    Et même sans cela, il manque des choses essentiels tels que
    dans displayGL :
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glutSwapBuffers();
    la fonction reshape car elle est appelé à la création de la fenêtre (attention c'est void reshape(int w, int h))

    Ensuite j'essaierai d'ajouter les shaders, mais seulement une fois que ton cube apparait correctement.

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    comme conseillé j'ai recommencé en me concentrant uniquement sur les vbo, j'ai un soucis avec le context que j'utilise.

    si je met le context 3.1 ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glutInitContextVersion(3,1);
    si je met le context 3.3 ça ne marche plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glutInitContextVersion(3,3);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    #include <GL/glew.h>
    #include <GL/freeglut.h>
    #include <iostream>
    #include <fstream>
     
    GLuint buffer;
     
    // vertex coords array
    GLfloat vertices[] = {1,1,1,  -1,1,1,  -1,-1,1,  1,-1,1,        // v0-v1-v2-v3
                          1,1,1,  1,-1,1,  1,-1,-1,  1,1,-1,        // v0-v3-v4-v5
                          1,1,1,  1,1,-1,  -1,1,-1,  -1,1,1,        // v0-v5-v6-v1
                          -1,1,1,  -1,1,-1,  -1,-1,-1,  -1,-1,1,    // v1-v6-v7-v2
                          -1,-1,-1,  1,-1,-1,  1,-1,1,  -1,-1,1,    // v7-v4-v3-v2
                          1,-1,-1,  -1,-1,-1,  -1,1,-1,  1,1,-1};   // v4-v7-v6-v5
     
    // color array
    GLfloat colors[] = {1,1,1,  1,1,0,  1,0,0,  1,0,1,              // v0-v1-v2-v3
                        1,1,1,  1,0,1,  0,0,1,  0,1,1,              // v0-v3-v4-v5
                        1,1,1,  0,1,1,  0,1,0,  1,1,0,              // v0-v5-v6-v1
                        1,1,0,  0,1,0,  0,0,0,  1,0,0,              // v1-v6-v7-v2
                        0,0,0,  0,0,1,  1,0,1,  1,0,0,              // v7-v4-v3-v2
                        0,0,1,  0,0,0,  0,1,0,  0,1,1};             // v4-v7-v6-v5
     
    void exitGL()
    {
    	glDeleteBuffers(1, &buffer);
    	std::cout << "buffer supprimé" << std::endl;
    }
     
    void keyboardGL(unsigned char key, int x, int y)
    {
    	switch(key)
    	{
    	case 27:
    		exit(0);
    		break;
    	default:
    		;
    	}
    	glutPostRedisplay();
    }
     
     
    void reshapeGL(int h, int w)
    {
    	glViewport(0, 0, w, h);
    	float aspectRatio = (float)w / h;
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	gluPerspective(60.0f, (float)(w)/h, 1.0f, 1000.0f);
    	glMatrixMode(GL_MODELVIEW);
    }
     
    //affichage opengl
    void displayGL(void)
    {
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
     
    	glPushMatrix();
     
    	glBindBuffer(GL_ARRAY_BUFFER, buffer);
     
    	glEnableClientState(GL_COLOR_ARRAY);
    	glEnableClientState(GL_VERTEX_ARRAY);
     
    	glColorPointer(3, GL_FLOAT, 0, (void*)sizeof(vertices));
    	glVertexPointer(3, GL_FLOAT, 0, 0);
     
    	glDrawArrays(GL_QUADS, 0, 24);
     
    	glDisableClientState(GL_VERTEX_ARRAY);
    	glDisableClientState(GL_COLOR_ARRAY);
     
    	glBindBuffer(GL_ARRAY_BUFFER, 0);
     
    	glPopMatrix();
     
    	glutSwapBuffers();
    }
     
    //initialisation opengl
    void initGLUT(int argc, char *argv[])
    {
    	glutInit(&argc, argv);
    	glutInitContextVersion(3,3);
    	//glutInitContextFlags (GLUT_FORWARD_COMPATIBLE | GLUT_DEBUG);
    	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_STENCIL);
    	glutInitWindowSize(640,480);
    	glutInitWindowPosition(50,50);
    	glutCreateWindow("test shader");
    	glutDisplayFunc(displayGL);
    	glutReshapeFunc(reshapeGL);
    	glutKeyboardFunc(keyboardGL);
    }
     
    void initLights()
    {
    	// set up light colors (ambient, diffuse, specular)
    	GLfloat lightKa[] = {.2f, .2f, .2f, 1.0f};  // ambient light
    	GLfloat lightKd[] = {.7f, .7f, .7f, 1.0f};  // diffuse light
    	GLfloat lightKs[] = {1, 1, 1, 1};           // specular light
    	glLightfv(GL_LIGHT0, GL_AMBIENT, lightKa);
    	glLightfv(GL_LIGHT0, GL_DIFFUSE, lightKd);
    	glLightfv(GL_LIGHT0, GL_SPECULAR, lightKs);
     
    	// position the light
    	float lightPos[4] = {0, 0, 20, 1}; // positional light
    	glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
     
    	glEnable(GL_LIGHT0);
    }
     
    void setCamera(float posX, float posY, float posZ, float targetX, float targetY, float targetZ)
    {
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    	gluLookAt(posX, posY, posZ, targetX, targetY, targetZ, 0, 1, 0);
    }
     
    void initGL()
    {
    	glShadeModel(GL_SMOOTH);
    	glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
     
    	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    	glEnable(GL_DEPTH_TEST);
    	glEnable(GL_LIGHTING);
    	glEnable(GL_TEXTURE_2D);
    	glEnable(GL_CULL_FACE);
     
    	glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
    	glEnable(GL_COLOR_MATERIAL);
     
    	glClearColor(0.0, 0.0, 0.0, 0.0);
    	glClearStencil(0);
    	glClearDepth(1.0f);
    	glDepthFunc(GL_LEQUAL);
     
    	initLights();
    	setCamera(0, 0, 5, 0, 0, 0);
    }
     
    int main(int argc, char *argv[])
    {
    	int OpenGLVersion[2];
    	GLint erreurCompilation = 0, tailleErreur = 0;
    	char *erreur = NULL;
     
    	//intialisation
    	initGLUT(argc,argv);
    	GLenum err=glewInit();
    	if(err!=GLEW_OK)
    	{
    		std::cout << "glewInit failed, aborting." << std::endl;
    		exit(1);
    	}
    	glGetIntegerv(GL_MAJOR_VERSION, &OpenGLVersion[0]);
    	glGetIntegerv(GL_MINOR_VERSION, &OpenGLVersion[1]);
    	std::cout << "OpenGL version = " << OpenGLVersion[0] << ".";
    	std::cout << OpenGLVersion[1] << std::endl << std::endl;
     
    	initGL();
     
    	atexit(exitGL);
     
    	//mise en tampon des buffers
    	glGenBuffers(1, &buffer);
    	glBindBuffer(GL_ARRAY_BUFFER, buffer);
    	glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(colors), vertices, GL_STATIC_DRAW);
    	glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
    	glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors);
     
    	//boucle opengl
    	glutMainLoop();
    }

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Il me semble que dans la version 3.3 glEnableClientState/glDisableClientState n'est plus utilisé et a été remplacé par glEnableVertexAttribArray/glDisableVertexAttribArray. Donc ça expliquerait pourquoi plus rien ne s'affiche.

    Tu peux jeter un oeil aux spécifications d'OpenGL 3.3 : http://www.opengl.org/sdk/docs/man3/

    Pour passer aux shaders, je te conseille un tuto assez bien fait qui t'explique comment gérer VBO et shaders : http://duriansoftware.com/joe/An-int...-Contents.html

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 61
    Points : 30
    Points
    30
    Par défaut
    Ah et j'oubliais, attention la fonction reshape doit être ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void reshapeGL(int w, int h)
    {
            glViewport(0, 0, w, h);
    	float aspectRatio = (float)w / (float)h;
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	gluPerspective(60.0f, aspectRatio, 1.0f, 1000.0f);
    	glMatrixMode(GL_MODELVIEW);
     
    }
    2 erreurs :
    tu as échangé w et h dans les paramètres
    pour calculer l'aspectRatio, il faut caster w ET h en float et ensuite le fournir à gluPerspective

    Sans ça tu as une déformation et ton carré n'est pas au centre.

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 19
    Points : 23
    Points
    23
    Par défaut
    merci pour les infos et le liens je vais voir ça de ce pas

Discussions similaires

  1. [VBO/Shaders] L'art d'obtenir un écran noir :/
    Par Solaroid dans le forum OpenGL
    Réponses: 16
    Dernier message: 13/02/2012, 17h23
  2. OpenGL VBO et shaders : rien ne s'affiche
    Par laurencew dans le forum OpenGL
    Réponses: 7
    Dernier message: 15/05/2011, 22h27
  3. Réponses: 2
    Dernier message: 16/11/2009, 09h36
  4. OpenGl VBO : problème de coordonnées de texturage
    Par Heero Yui dans le forum OpenGL
    Réponses: 1
    Dernier message: 22/03/2009, 10h33
  5. OpenGL/C++/Shader ne fonctionnant pas
    Par Guildem dans le forum OpenGL
    Réponses: 13
    Dernier message: 06/10/2005, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo