Ejemplo n.º 1
0
int main(int argc, char** argv){
	calglSetApplicationNameGlobalSettings("3D life");
	calglSetRowsAndColumnsGlobalSettings(25, 25);
	calglSetStepGlobalSettings(4000);
	calglSetWindowDimensionGlobalSettings(400, 400);
	calglSetWindowPositionGlobalSettings(40, 40);

	struct CALDrawModel3D* drawModel;

	//cadef and rundef
	life3D = calCADef3D(calglGetGlobalSettings()->rows, calglGetGlobalSettings()->columns, LAYERS, CAL_MOORE_NEIGHBORHOOD_3D, CAL_SPACE_TOROIDAL, CAL_NO_OPT);
	life3Dsimulation = calRunDef3D(life3D, 1, CAL_RUN_LOOP, CAL_UPDATE_IMPLICIT);
	//add substates
	Q.life = calAddSubstate3Db(life3D);
	//add transition function's elementary processes
	calAddElementaryProcess3D(life3D, life3DTransitionFunction);
	
	//simulation run setup
	calRunAddInitFunc3D(life3Dsimulation, life3DSimulationInit);
	calRunInitSimulation3D(life3Dsimulation);	//It is required in the case the simulation main loop is explicitated; similarly for calRunFinalizeSimulation3D
	calRunAddStopConditionFunc3D(life3Dsimulation, life3DSimulationStopCondition);

	//drawModel definition
	drawModel = calglDefDrawModel3D(CALGL_DRAW_MODE_FLAT, "Life", life3D, life3Dsimulation);
	calglAddToDrawModel3Db(drawModel, NULL, &Q.life, CALGL_TYPE_INFO_VERTEX_DATA, CALGL_TYPE_INFO_USE_DEFAULT, CALGL_DATA_TYPE_DYNAMIC);
	calglColor3D(drawModel, 0.5f, 0.5f, 0.5f, 1.0f);
	calglAddToDrawModel3Db(drawModel, Q.life, &Q.life, CALGL_TYPE_INFO_COLOR_DATA, CALGL_TYPE_INFO_USE_CONST_VALUE, CALGL_DATA_TYPE_DYNAMIC);
	calglAddToDrawModel3Db(drawModel, Q.life, &Q.life, CALGL_TYPE_INFO_NORMAL_DATA, CALGL_TYPE_INFO_USE_DEFAULT, CALGL_DATA_TYPE_DYNAMIC); 
	calglStartProcessWindow3D(argc, argv);

	//finalizations
	calRunFinalize3D(life3Dsimulation);
	calFinalize3D(life3D);

	calglDestroyGlobalSettings();
	calglCleanDrawModelList3D();
	return 0;
}
Ejemplo n.º 2
0
void calglDestroyWindow3D(struct CALGLWindow3D* window){
	GLint i = 0;

	if (window){
		free(window->subWindowID);
		free(window->positionsX);
		free(window->positionsY);
		for (i = 0; i < window->noModels; i++){
			calglDestoyDrawModel3D(window->models[i]);
		}
		free(window);

		free(xPos);
		free(yPos);
		free(zPos);
		free(xRot);
		free(yRot);
		free(zRot);
	}

	calglCleanDrawModelList3D();
	calglDestroyGlobalSettings();
}