public void render(int delta) { glClearColor(0.5f, 0.5f, 0.8f, 1.0f); glClearDepth(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); update(); // Like a cake, this has layers. We want ground at the bottom so it goes first. for (AbstractEntity e : Window.ground) { e.draw(); } for (AbstractEntity e : Window.entities) { e.update(delta); e.draw(); } if (Window.leftButtonHeld) { drawLineBox(Window.iMouseX, Window.iMouseY, Window.mouseX, Window.mouseY, true); } renderer.flushQueue(); drawFPS(fps); }
@Override protected void display() { glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); MatrixStack modelMatrix = new MatrixStack(); modelMatrix.setMatrix(viewPole.calcMatrix()); Vec4 lightDirCameraSpace = Mat4.mul(modelMatrix.top(), lightDirection); glUseProgram(whiteDiffuseColor.theProgram); glUniform3(whiteDiffuseColor.dirToLightUnif, lightDirCameraSpace.fillAndFlipBuffer(vec4Buffer)); glUseProgram(vertexDiffuseColor.theProgram); glUniform3( vertexDiffuseColor.dirToLightUnif, lightDirCameraSpace.fillAndFlipBuffer(vec4Buffer)); glUseProgram(0); { modelMatrix.push(); // Render the ground plane. { modelMatrix.push(); glUseProgram(whiteDiffuseColor.theProgram); glUniformMatrix4( whiteDiffuseColor.modelToCameraMatrixUnif, false, modelMatrix.top().fillAndFlipBuffer(mat4Buffer)); Mat3 normMatrix = new Mat3(modelMatrix.top()); glUniformMatrix3( whiteDiffuseColor.normalModelToCameraMatrixUnif, false, normMatrix.fillAndFlipBuffer(mat3Buffer)); glUniform4f(whiteDiffuseColor.lightIntensityUnif, 1.0f, 1.0f, 1.0f, 1.0f); planeMesh.render(); glUseProgram(0); modelMatrix.pop(); } // Render the Cylinder { modelMatrix.push(); modelMatrix.applyMatrix(objtPole.calcMatrix()); if (drawColoredCyl) { glUseProgram(vertexDiffuseColor.theProgram); glUniformMatrix4( vertexDiffuseColor.modelToCameraMatrixUnif, false, modelMatrix.top().fillAndFlipBuffer(mat4Buffer)); Mat3 normMatrix = new Mat3(modelMatrix.top()); glUniformMatrix3( vertexDiffuseColor.normalModelToCameraMatrixUnif, false, normMatrix.fillAndFlipBuffer(mat3Buffer)); glUniform4f(vertexDiffuseColor.lightIntensityUnif, 1.0f, 1.0f, 1.0f, 1.0f); cylinderMesh.render("lit-color"); } else { glUseProgram(whiteDiffuseColor.theProgram); glUniformMatrix4( whiteDiffuseColor.modelToCameraMatrixUnif, false, modelMatrix.top().fillAndFlipBuffer(mat4Buffer)); Mat3 normMatrix = new Mat3(modelMatrix.top()); glUniformMatrix3( whiteDiffuseColor.normalModelToCameraMatrixUnif, false, normMatrix.fillAndFlipBuffer(mat3Buffer)); glUniform4f(whiteDiffuseColor.lightIntensityUnif, 1.0f, 1.0f, 1.0f, 1.0f); cylinderMesh.render("lit"); } glUseProgram(0); modelMatrix.pop(); } modelMatrix.pop(); } }