bool begin() { bool Validated = true; if(Validated) Validated = initMax();; if(Validated) Validated = initProgram(); if(Validated) Validated = initBuffer(); if(Validated) Validated = initVertexArray(); return Validated; }
bool begin() { bool Validated = glf::checkGLVersion(SAMPLE_MAJOR_VERSION, SAMPLE_MINOR_VERSION); if(Validated && glf::checkExtension("GL_ARB_debug_output")) Validated = initDebugOutput(); if(Validated) Validated = initMax();; if(Validated) Validated = initProgram(); if(Validated) Validated = initBuffer(); if(Validated) Validated = initVertexArray(); return Validated; }
bool begin() { bool Validated(true); Validated = Validated && this->checkExtension("GL_ARB_arrays_of_arrays"); Validated = Validated && this->checkExtension("GL_ARB_program_interface_query"); if(Validated) Validated = initMax();; if(Validated) Validated = initProgram(); if(Validated) Validated = initBuffer(); if(Validated) Validated = initVertexArray(); return Validated; }
//////////////////////Bullet Physics code//////////////////////////////// void init_physics(){ m_collisionConfiguration = new btFluidRigidCollisionConfiguration(); //'standard' Bullet configuration m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration); m_broadphase = new btDbvtBroadphase(); m_solver = new btSequentialImpulseConstraintSolver(); m_fluidSolverCPU = new btFluidSphSolverDefault(); m_dynamicsWorld = new btFluidRigidDynamicsWorld(m_dispatcher, m_broadphase, m_solver, m_collisionConfiguration, m_fluidSolverCPU); m_fluidWorld = static_cast<btFluidRigidDynamicsWorld*>(m_dynamicsWorld); m_fluidWorld->setGravity(btVector3(0.0 ,-9.8, 0.0)); m_fluidWorld->applyGravity(); btCollisionShape* groundShape = new btBoxShape( btVector3(100.0, 0.0, 100.0) ); m_collisionShapes.push_back(groundShape); plane = new Plane(m_fluidWorld, groundShape, 0, 0, 0); ///////////////////// Demo_Drop///////////////////////////// const btScalar VOL_BOUND = 52.0f; btVector3 volMin(-VOL_BOUND, -10.0f, -VOL_BOUND); btVector3 volMax(VOL_BOUND, VOL_BOUND * 2.0f, VOL_BOUND); { btFluidSph* fluid; fluid = new btFluidSph(m_fluidWorld->getGlobalParameters(), MIN_FLUID_PARTICLES); btFluidSphParametersLocal FL = fluid->getLocalParameters(); FL.setDefaultParameters(); FL.m_aabbBoundaryMin = volMin; FL.m_aabbBoundaryMax = volMax; FL.m_particleRadius = 0.8f; FL.m_enableAabbBoundary = 1; FL.m_restDensity *= 3.0f; FL.m_sphParticleMass *= 2.0f; FL.m_stiffness /= 3.0f; fluid->setLocalParameters(FL); fluid->setGridCellSize(m_fluidWorld->getGlobalParameters() ); m_fluids.push_back(fluid); // Also create an emitter //* { btFluidEmitter* emitter = new btFluidEmitter(); m_emitter = emitter; emitter->m_fluid = fluid; const btScalar OFFSET(1.0); emitter->m_positions.push_back(btVector3(0, 0, 0)); emitter->m_positions.push_back(btVector3(0, OFFSET, 0)); emitter->m_positions.push_back(btVector3(0, -OFFSET, 0)); emitter->m_positions.push_back(btVector3(OFFSET, 0, 0)); emitter->m_positions.push_back(btVector3(-OFFSET, 0, 0)); emitter->m_speed = 1.f; emitter->m_center.setValue(12.f, 2.f, 12.f); emitter->m_rotation.setEuler(90, -45, 0); // const btScalar INIT_BOUND = 50.0f; btVector3 initMin(-INIT_BOUND, 0.f, 0.f); btVector3 initMax(INIT_BOUND, 45.f, INIT_BOUND); emitter->addVolume(fluid, initMin, initMax, fluid->getEmitterSpacing(m_fluidWorld->getGlobalParameters()) * 0.87 ); // m_fluidWorld->addSphEmitter(emitter); } //*/ //*/ for (int i = 0; i < m_fluids.size(); ++i) { const bool ENABLE_CCD = true; if (ENABLE_CCD) m_fluids[i]->setCcdMotionThreshold( m_fluids[i]->getLocalParameters().m_particleRadius); m_fluidWorld->addFluidSph(m_fluids[i]); } } }