Exemple #1
0
int main(int argCount, char *arg[]){	
	if (argCount == 4){
	
		clock_t start, end;
		
		// Load two files
		HEAD *dry = getFile(arg[1]);
		HEAD *iresp = getFile(arg[2]);
		HEAD *output = malloc(sizeof(HEAD));
		if (dry == NULL || iresp == NULL || output == NULL){
			printf("MAIN - Could not load sample files\n");
			destroyAll(dry, iresp, output);
			exit(-1);
		}	
		printf("MAIN - Created Space for 3 files\n");
		// Determine data size for output file
		U_INT dataSize;
		U_INT impSize;
		memcpy(&dataSize, &dry->head[DATA_SIZE], WORD);
		memcpy(&impSize, &iresp->head[DATA_SIZE], WORD);
		
		U_INT outSamples = ((dataSize + impSize)/2) - 1;
		output->head = generateHead(dataSize + impSize - HALFWORD);
		output->data = calloc(sizeof(float), outSamples);
		if (output->head == NULL || output->data == NULL){
			printf("MAIN - Could not generate output file\n");
			destroyAll(dry, iresp, output);
			exit(-1);
		}
		
		// Convolve
		printf("MAIN - setup output file, starting convolve...\n");
		start = clock();
		inputSide(dry, iresp, output);
		end = clock();
		printf("MAIN - finished convolution in %ld\n", (end - start)/CLOCKS_PER_SEC);
		
		// Save file
		writeToFile(output, arg[3]);
		printf("MAIN - Wrote to file\n");
		
		// Clean up
		destroyAll(dry, iresp, output);
		printf("MAIN - Cleaned up data\n");
		
	} else {
		printf("invalid number of arguments\n");
		exit(0);
	} 
}
void init() 
{
	int vboIndex = 0;	// Used to auto-increment the vbo index
	/*select clearing (background) color*/
	glClearColor(0.0, 0.0, 0.0, 0.0);

	//populate our arrays
	generateCar();
	generateStage();
	generateWheel();
	generateHead();
	generateEye();
	generatePylon();

	// Load shaders and use the resulting shader program
	GLuint program = InitShader( "vshader-transform.glsl", "fshader-transform.glsl" );
	glUseProgram( program );

	// Create all vertex array object
	glGenVertexArrays( VAO_COUNT, &vao[0] );
	glGenBuffers(VAO_COUNT*2, &vbo[0]);

	// Create and initialize any buffer objects
	glBindVertexArray( vao[CAR] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(carVerts), carVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(carColors), carColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[STAGE] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(stageVerts), stageVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(stageColors), stageColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[WHEEL] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(wheelVerts), wheelVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(wheelColors), wheelColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[HEAD] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(headVerts), headVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(headColors), headColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[EYE] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(eyeVerts), eyeVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(eyeColors), eyeColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[WHEEL_STRIPE] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(wheelStripeVerts), wheelStripeVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(wheelStripeColors), wheelStripeColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[WHEEL_CONNECTORS] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(wheelConVerts), wheelConVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(wheelConColors), wheelConColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	glBindVertexArray( vao[PYLON] );
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(pylonVerts), pylonVerts, GL_STATIC_DRAW);
	vPosition = glGetAttribLocation(program, "vPosition");
	glEnableVertexAttribArray(vPosition);
	glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0, 0);
	glBindBuffer( GL_ARRAY_BUFFER, vbo[vboIndex++] );
	glBufferData( GL_ARRAY_BUFFER, sizeof(pylonColors), pylonColors, GL_STATIC_DRAW );
	vColor = glGetAttribLocation(program, "vColor");
	glEnableVertexAttribArray(vColor);
	glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0, 0);

	//grab pointers for our modelview and perspecive uniform matrices
	model_view = glGetUniformLocation(program, "model_view");
	projection = glGetUniformLocation(program, "projection");

	//Only draw the things in the front layer
	glEnable(GL_DEPTH_TEST);
}