Bonjour à tous,

L'utilisation de glDrawPixels étant bannie, il faut maintenant mapper une texture depuis un PBO.

J'ai donc un PBO bien rempli que je veux simplement afficher mais je n'ai trouvé aucun moyen simple de le faire.

J'ai essayé ça mais j'ai une page blanche. Je ne suis pas sûr de savoir ce que je fais

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
 
void initgl(){
	int c=1;
	char* dummy = "";
	glutInit( &c, &dummy );
	glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA );
	glutInitWindowSize( hauteur, largeur );
	glutCreateWindow( "Test GL" );
 
 
	glBindBuffer    = (PFNGLBINDBUFFERARBPROC)GET_PROC_ADDRESS("glBindBuffer");
	glDeleteBuffers = (PFNGLDELETEBUFFERSARBPROC)GET_PROC_ADDRESS("glDeleteBuffers");
	glGenBuffers    = (PFNGLGENBUFFERSARBPROC)GET_PROC_ADDRESS("glGenBuffers");
	glBufferData    = (PFNGLBUFFERDATAARBPROC)GET_PROC_ADDRESS("glBufferData");
 
 
	glGenBuffers( 1, &bufferObj );
	glBindBuffer( GL_PIXEL_PACK_BUFFER, bufferObj );
 
	glBufferData( GL_PIXEL_PACK_BUFFER, DIM*DIM* sizeof(uchar4),NULL, GL_STREAM_DRAW );
 
	glBindBuffer( GL_PIXEL_PACK_BUFFER, 0 );
 
	glGenTextures(1, &tex);
        glBindTexture(GL_TEXTURE_2D, tex);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, DIM, DIM, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
        glBindTexture(GL_TEXTURE_2D, 0);
}
 
 
void draw(){
    glBindTexture(GL_TEXTURE_2D, tex);
    glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, bufferObj);
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, largeur, hauteur, GL_RGBA, GL_UNSIGNED_BYTE, 0);
 
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f, -1.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex2f(1.0f, -1.0f);
    glTexCoord2f(1.0f, 1.0f); glVertex2f(1.0f, 1.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex2f(-1.0f, 1.0f);
    glEnd();
    glutSwapBuffers();
    glutPostRedisplay();
}