c++ - Saving a specific Camera View in OpenGL as Image -


i have 3d scene object , save view of object different 1 of current screen at. thought i'd have (pseudo code):

pushmatrix() loadidentity() translateandrotate() gluperspective() setviewport() drawscene() savescreenshot() popmatrix() 

but picture of current view of camera, not 1 specified. did forget something?

edit: because of answer below, tried following code:

void scenephotograph(glubyte* target, float *translation, float rotationaroundy) {     glmatrixmode(gl_projection);     gluperspective(54.0f, (glfloat)openglcontrol1->width / (glfloat)openglcontrol1->height, 1.0f, 3000.0f);     glviewport(0,0,openglcontrol1->width, openglcontrol1->height);     glmatrixmode(gl_modelview);     glclear(gl_color_buffer_bit | gl_depth_buffer_bit);     glloadidentity();        gltranslatef(translation[0],translation[1],translation[2]);     glrotatef(rotationaroundy, 0,1,0);     openglcontrol1_ondrawgl(null,system::eventargs::empty);     openglcontrol1->refresh();     glreadpixels(0, 0, openglcontrol1->width, openglcontrol1->height, gl_rgb, gl_unsigned_byte, target);      glclear(gl_color_buffer_bit | gl_depth_buffer_bit);     glloadidentity();        cam->setview();     openglcontrol1_ondrawgl(null,system::eventargs::empty);     openglcontrol1->refresh();     glutswapbuffers(); } 

that giving me access violation @ glutswapbuffers(); ideas?

first, make sure not mixing diferent matrix in code. screenshot, need position camera view on sccreen, but, before swap buffers, read pixels current framebuffer , store image.

so, need this:

glmatrixmode(gl_projection); gluperspective(); glmatrixmode(gl_modelview); glclear(); // clear buffers here loadidendity(); setcameraposition(); translaterotate(); drawscene(); screenshot();  // again set camera correct position glclear(); // clear buffers here loadidendity(); setcameraposition(); translaterotate(); drawscene(); swapbuffers(); 

as can see, screenshot take care of reading pixels current framebuffer , save image. again position camera correct place


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -