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
|
void display()
{
glClearColor (0.0,0.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
Camera.Render();
glBindBuffer( GL_PIXEL_UNPACK_BUFFER, 0 );
Ciel->Render(); //Je plaque ma première texture : c'est un SkyBox en utilisant glTexCoord3f()
renduGPU(VertexBuffer); //Je calcule les vertex
cudaThreadSynchronize();
Texture_GPU(pbo); //Je calcule la texture
cudaThreadSynchronize();
glBindBuffer( GL_PIXEL_UNPACK_BUFFER, pbo);
glBindTexture(GL_TEXTURE_2D, image);
glTexImage2D( GL_TEXTURE_2D, 0, 4, ImageWidth*pas, ImageHeight*pas, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glBindBuffer(GL_ARRAY_BUFFER, VertexBuffer);
glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0));
glBindBuffer(GL_ARRAY_BUFFER, TextureBuffer);
glTexCoordPointer(2, GL_FLOAT, 0, BUFFER_OFFSET(0));
glBindBuffer(GL_ARRAY_BUFFER, ColorBuffer);
glColorPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0));
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState( GL_COLOR_ARRAY );
glDrawArrays(GL_QUADS, 0, nbr_Particles*4);
glBindBuffer( GL_PIXEL_UNPACK_BUFFER, 0 );
glDisableClientState( GL_COLOR_ARRAY );
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glutSwapBuffers();
} |
Partager