void RenderCallback() { // Clear buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ProcessCameraKeys(); SetupCamera(); if (gScene && !bPause) { GetPhysicsResults(); ProcessInputs(); StartPhysics(); } // Display scene RenderActors(bShadows); if (bForceMode) DrawForce(gSelectedActor, gForceVec, NxVec3(1,1,0)); else DrawForce(gSelectedActor, gForceVec, NxVec3(0,1,1)); gForceVec = NxVec3(0,0,0); // Render HUD hud.Render(); glFlush(); glutSwapBuffers(); }
void RenderCallback() { // Clear buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ProcessCameraKeys(); SetupCamera(); UpdateEmitterPosition(); if (gScene && !bPause) { GetPhysicsResults(); ProcessInputs(); StartPhysics(); } // Display scene RenderActors(bShadows); RenderFluid(); if (bForceMode) DrawForce(gSelectedActor, gForceVec, NxVec3(1,1,0)); else DrawForce(gSelectedActor, gForceVec, NxVec3(0,1,1)); gForceVec = NxVec3(0,0,0); if (bEmitterWireframe) { NxMat34 fluidEmitterMat = fluidEmitter->getGlobalPose(); NxVec3 fluidEmitterPos, fluidEmitterDir; fluidEmitterPos = fluidEmitterMat.t; fluidEmitterMat.M.getColumn(2,fluidEmitterDir); DrawArrow(fluidEmitterPos, fluidEmitterPos + fluidEmitterDir, NxVec3(0,0,1)); DrawEllipse(20, fluidEmitter->getGlobalPose(), NxVec3(0.5,0,0.5), fluidEmitter->getDimensionX(), fluidEmitter->getDimensionY()); } if (!bPause) { if (gDeltaTime < 10) gTotalTime += gDeltaTime; } // Render HUD hud.Render(); glFlush(); glutSwapBuffers(); }
void CVXS_SimGLView::Draw(int Selected, bool ViewSection, int SectionLayer) { if (!pSim->IsInitalized()) return; if (CurViewMode == RVM_NONE) return; else if (CurViewMode == RVM_VOXELS){ switch (CurViewVox){ case RVV_DISCRETE: DrawGeometry(Selected, ViewSection, SectionLayer); break; //section view only currently enabled in voxel view mode case RVV_DEFORMED: DrawVoxMesh(Selected); break; case RVV_SMOOTH: DrawSurfMesh(); break; } } else { //CurViewMode == RVT_BONDS vfloat VoxScale=0.2; if (ViewForce){ DrawForce(); DrawGeometry(Selected, ViewSection, SectionLayer, VoxScale); } else { if (CurViewVox == RVV_SMOOTH) VoxScale=0.1; DrawBonds(); DrawGeometry(Selected, ViewSection, SectionLayer, VoxScale); } DrawStaticFric(); } if (ViewAngles) DrawAngles(); if (pSim->IsFeatureEnabled(VXSFEAT_FLOOR)) DrawFloor(); //draw the floor if its in use // if (pEnv->IsFloorEnabled()) DrawFloor(); //draw the floor if its in use NeedStatsUpdate=true; }
void RenderCallback() { if (gScene && !bPause) { StartPhysics(); GetPhysicsResults(); } // Clear buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); ProcessInputs(); ProcessCameraKeys(); SetupCamera(); RenderActors(bShadows); // Render all the cloths in the scene for (MyCloth **cloth = gCloths.begin(); cloth != gCloths.end(); cloth++) { glColor4f(1.0f, 0.0f, 0.0f,1.0f); (*cloth)->draw(bShadows); } if (bForceMode) DrawForce(gSelectedActor, gForceVec, NxVec3(1,1,0)); else DrawForce(gSelectedActor, gForceVec, NxVec3(0,1,1)); gForceVec = NxVec3(0,0,0); // Render HUD hud.Render(); glFlush(); glutSwapBuffers(); }
void CVX_Sim::Draw(int Selected, bool ViewSection, int SectionLayer) { if (!Initalized) return; if (CurViewMode == RVM_NONE) return; else if (CurViewMode == RVM_VOXELS){ switch (CurViewVox){ case RVV_DISCRETE: DrawGeometry(Selected, ViewSection, SectionLayer); break; //section view only currently enabled in voxel view mode case RVV_DEFORMED: DrawVoxMesh(Selected); break; case RVV_SMOOTH: DrawSurfMesh(); break; } } else { //CurViewMode == RVT_BONDS DrawBonds(); DrawStaticFric(); } if (ViewAngles) DrawAngles(); if (ViewForce) DrawForce(); if (pEnv->IsFloorEnabled()) DrawFloor(); //draw the floor if its in use NeedStatsUpdate=true; }