// Here is the function that gets called each time the window needs to be redrawn. // It is the "paint" method for our program, and is set up from the glutDisplayFunc in main void render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); if(start){ depth += speed/2.0; puckFB -= speed; checkGoal(); } AdjustVertexData(puckLR, puckFB); glUseProgram(shaderProgramID); // Fill the matrices with valid data MathHelper::makeScale(scaleMatrix, scaleAmount, scaleAmount, scaleAmount); MathHelper::makeRotateY(rotYMatrix, thetaY); MathHelper::makeRotateX(rotXMatrix, thetaX); MathHelper::makeTranslate(transMatrix, horizontal, vertical, depth); /*multiply the matricies*/ MathHelper::matrixMult4x4(tempMatrix1, rotXMatrix, scaleMatrix); MathHelper::matrixMult4x4(tempMatrix2, rotYMatrix, tempMatrix1); MathHelper::matrixMult4x4(M, transMatrix, tempMatrix2); glUniformMatrix4fv(modelMatrixID, 1, GL_TRUE, M); glUniformMatrix4fv(viewMatrixID, 1, GL_TRUE, V); glUniformMatrix4fv(perspectiveMatrixID, 1, GL_TRUE, P); glPolygonMode(GL_FRONT_AND_BACK, GL_QUADS); glDrawElements (GL_TRIANGLES, ARRAY_COUNT( indices ), GL_UNSIGNED_INT, NULL); glutSwapBuffers(); glutPostRedisplay(); }
void draw(float a) { glClearColor(0.5, (a++ / 1000.f), 0, 1); glClear(GL_COLOR_BUFFER_BIT); float fXOffset = 0.0f, fYOffset = 0.0f; ComputePositionOffsets(fXOffset, fYOffset); AdjustVertexData(fXOffset, fYOffset); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(theProgram); glUniform2f(offsetLocation, fXOffset, fYOffset); glUniform1f(timeLocation, SDL_GetTicks()/1000.0f); size_t colorData = sizeof(vertexPositions) / 2; glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, (void*)colorData); glDrawArrays(GL_TRIANGLES, 0, 36); glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); glUseProgram(0); SDL_GL_SwapWindow(m_window); }
void render(CGLContextObj cgl_ctx) { float fXOffset = 0.0f, fYOffset = 0.0f; ComputePositionOffsets(fXOffset, fYOffset); AdjustVertexData(fXOffset, fYOffset); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(shader_program); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer_object); glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, (void *) (sizeof(float)*3*4)); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); glUseProgram(0); CGLFlushDrawable(cgl_ctx); }
void display() { float xOffset = 0.0f, yOffset = 0.0f; ComputePositionOffsets(xOffset, yOffset); AdjustVertexData(xOffset, yOffset); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glUseProgram(theProgram); glBindBuffer(GL_ARRAY_BUFFER, positionBufferObject); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); glDrawArrays(GL_TRIANGLES, 0, 3); glDisableVertexAttribArray(0); glUseProgram(0); }