Je veux avoir le rendu de ma scene directement dans une bitmap et pas sur le panel de mon fenetre!
Est ce qu'il suffit de créer un dc a partir de ma Bitmap ou comment envoyer en meme temps le rendu vers la Bitmap?
Version imprimable
Je veux avoir le rendu de ma scene directement dans une bitmap et pas sur le panel de mon fenetre!
Est ce qu'il suffit de créer un dc a partir de ma Bitmap ou comment envoyer en meme temps le rendu vers la Bitmap?
Peut être render-to-texture:
http://developer.nvidia.com/object/gdc_oglrtt.html
Salut,
J'ai peut-être une partie de réponse à ta question :
->pour enregistrer un screen shot dans une texture:
->pour enregistrer une texture dans un bmp :Code:
1
2
3
4 GLuint texture; glGenTextures(1, &texture); glBindTexture(GL_TEXTURE_2D, texture); glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,0,0,width,height,0);
->une fois enregistrer tu peux détruire ta texture:Code:
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 FILE *file; file = fopen( "picture.bmp" , "wb" ); if( !file ) return; GLuint width, height; SHeaderBMP header; SHeaderBMPInfo headerinfo; //get texture size glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH,&width); glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT,&height); //set header header.bfType[0] = 'B'; header.bfType[1] = 'M'; header.bfReserved1 = 0; header.bfReserved2 = 0; header.bfOffBits = sizeof(SHeaderBMPInfo) + sizeof(SHeaderBMP); //set info header headerinfo.biSize = sizeof(SHeaderBMPInfo); headerinfo.biWidth = width; headerinfo.biHeight = height; headerinfo.biPlanes = 0; headerinfo.biBitCount = 24; //RGB 8*3 headerinfo.biCompression = 0; headerinfo.biSizeImage = 0; headerinfo.biXPelsPerMeter = 0; headerinfo.biYPelsPerMeter = 0; headerinfo.biClrUsed = 0; headerinfo.biClrImportant = 0; //write headers fwrite(&header,sizeof(SHeaderBMP),1,file); fwrite (&headerinfo, sizeof (SHeaderBMPInfo), 1, file); GLubyte *pixels; pixels = new GLubyte[width*height*3]; glBindTexture(GL_TEXTURE_2D,texture); glGetTexImage(GL_TEXTURE_2D,level,GL_BGR_EXT, GL_UNSIGNED_BYTE, pixels); //write data fwrite (pixels, width*height*3*sizeof(GLubyte), 1, file); fclose (file); delete pixels;
j'espère que ca te mettera sur la voie ;) ...Code:glDeleteTextures(1, &texture);