开发者

Display object in just a certain viewport

Hi I got 4 viewports and one large that I can switch between now I got an object namely the camera and the cameras target position that I show with rendering a sphere at those locations. I want to show the cameras position in 3 of my viewports but not in the last which is the camera display but at the moment I got an all or nothing scenario.

void display(int what)
{
 if(what==5){
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 camControll();}

 if(what==1){
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(75,15,-5,0,5,-5,0,1,0);}

 if(what==2){
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(0,110,0,0,0,0,1,0,0);}

 if(what==3){
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(45.0f, float(320) / float(240), 0.1f, 100.0f); 
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 camControll();}

 if(what==4){
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(185,75,25,0,28,0,0,1,0);}


 //glMatrixMode(GL_MODELVIEW);
 //glLoadIdentity();
 ////gluLookAt(cos(shared.time) * shared.distance, 10, sin(shared.time) * shared.distance, 0, 0, 0, 0, 1, 0);  
 ////ca.orbitYaw(0.05);
 //ca.lookAt();

 glClearColor(0, 0, 0, 1);
 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 drawScene(); // scene that all views should render
 drawCamera(); / camera position that only certain views should render
 glutSwapBuffers();
}

I'm thinking that perhaps I could do one sweep for first the 3 viewports and then call glutSwapBuffers() and then do the other viewport without the camera position but some stuttering I previously had was traced to glutSwapBuffers() being called for each viewport so I guess there has to be another way only that 开发者_如何转开发I cant figure it out.


You have to render everything before swapping buffers.

As you do it - it is not going to work. Actually, it will work, but not you want.

EDIT

To render to a texture take a look into one of the links here.

After changing a view, render the image for the specific view to a texture. Then for the final image, set the final view and render all 3 textures. Only when the final image is rendered, swap buffers.

On the 2nd thought, it would be much better if you could set the vertices of all objects to render and render whole image in one pass.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜