void WindowsHost::EndFrame() { GL_EndFrame(); }
void GL_SDL_EndFrame(void) { GL_EndFrame(); SDL_GL_SwapBuffers( ); }
void GlassViewer::draw(gcn::Graphics *g) { sceneobj_t sc; int x,y; vec4_t rect; if(isCulled(g)) return; getAbsolutePosition(x, y); gcn::Rectangle r = g->getCurrentClipArea(); //setup camera Cam_DefaultCamera(&cam, r.width, r.height, 0.1, Cvar_GetValue("gfx_farclip")); cam.fovx = fov; cam.fog_near = cam.fog_far = 10000; cam.x = x; cam.y = Vid_GetScreenH()-y-mDimension.height; cam.use_viewport = true; Cam_CalcFovy(&cam); //Cam_SetDistance(&cam, 1000); M_CopyVec3(target, cam.viewaxis[AXIS_FORWARD]); M_GetAxisFromForwardVec(cam.viewaxis[AXIS_FORWARD], cam.viewaxis); M_CopyVec3(camPos, cam.origin); cam.time = Host_Milliseconds()/1000.0f; SET_VEC4(rect, 0, 0, r.width, r.height); if(mOpaque) { g->setColor(getBackgroundColor()); g->fillRectangle(gcn::Rectangle(0,0,getWidth(),getHeight())); } Scene_Clear(); Scene_SetFrustum(&cam, rect); if(model!=(residx_t)-1) { CLEAR_SCENEOBJ(sc); //SET_VEC3(cam.viewaxis[AXIS_FORWARD], target[0]-camPos[0], target[1]-camPos[1], target[2]-camPos[2]); //M_Normalize(cam.viewaxis[AXIS_FORWARD]); //M_GetAxisFromForwardVec(cam.viewaxis[AXIS_FORWARD], cam.viewaxis); M_MultVec3(cam.viewaxis[AXIS_FORWARD], -distance, cam.origin); M_AddVec3(cam.origin, camPos, cam.origin); sc.model = model; sc.skeleton = &skeleton; sc.flags = SCENEOBJ_NEVER_CULL | SCENEOBJ_USE_AXIS; SET_VEC3(sc.rimColor, 1.0, 1.0, 1.0); if(animState.size() > 0) { Geom_BeginPose(sc.skeleton, sc.model); Geom_SetBoneAnim("", animState.c_str(), Host_Milliseconds(), Host_Milliseconds(), 0, 0); Geom_EndPose(); } M_CopyVec3(position, sc.pos); sc.angle[0] = sc.angle[1] = 0; sc.angle[2] = angle; M_GetAxis(sc.angle[0], sc.angle[1], sc.angle[2], sc.axis); if(mAutoRotate) angle = int(angle + dAngle) % 360; if(angle<0) angle +=360; Scene_AddObject(&sc); } if(!world) { cam.fog_near = 9000; cam.fog_far = 10000; cam.flags |= CAM_NO_WORLD; } else { cam.flags &= ~CAM_NO_WORLD; cam.fog_near = Cvar_GetValue("gfx_fog_near"); cam.fog_far = Cvar_GetValue("gfx_fog_far"); WO_RenderEmitters(cam.origin); WL_RenderLights(cam.origin); } //FIXME: add post-processing with viewers int old = gfx_postProcessing.integer; Cvar_SetVarValue(&gfx_postProcessing, 0); GL_EndFrame(); GL_Enable(GL_CULL_FACE); Scene_Render(&cam, cam.origin, 0); GL_Disable(GL_CULL_FACE); GL_BeginFrame(); Cvar_SetVarValue(&gfx_postProcessing, old); if(animState.size() > 0 && model != (residx_t)-1) Geom_FreeSkeleton(&skeleton); }