bool begin()
	{
		bool Validated = true;

		if(Validated)
			Validated = initMax();;
		if(Validated)
			Validated = initProgram();
		if(Validated)
			Validated = initBuffer();
		if(Validated)
			Validated = initVertexArray();

		return Validated;
	}
Exemplo n.º 2
0
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;
	}
Exemplo n.º 4
0
//////////////////////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]);
		}

	}


}