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); }