void renderFrame(float fDeltaTime) { GLES20.glUseProgram(m_DefaultProgram); int posHandle = GLES20.glGetAttribLocation(m_DefaultProgram, "vPosition"); int uvHandle = GLES20.glGetAttribLocation(m_DefaultProgram, "vUV"); int textureHandle = GLES20.glGetUniformLocation(m_DefaultProgram, "texture"); int laserColorHandle = GLES20.glGetUniformLocation(m_DefaultProgram, "colLaser"); GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glUniform1i(textureHandle, 0); for (GameObject go : gameActivity.gameObjects) { go.render(fDeltaTime, posHandle, uvHandle, laserColorHandle); } GLES20.glDisableVertexAttribArray(posHandle); GLES20.glDisableVertexAttribArray(uvHandle); ArrayList<PointF> laserSegments = new ArrayList<PointF>(); ArrayList<Float> laserLengths = new ArrayList<>(); ArrayList<ColorF> laserColors = new ArrayList<ColorF>(); gameActivity.computeLasers(laserSegments, laserLengths, laserColors); laserRenderer.setLasers(laserSegments, laserLengths, laserColors); laserRenderer.render(fDeltaTime); }