public void createShader(Shader shader) { this.shader = shader; glActiveTexture(GL_TEXTURE1); shader.bind(); int uniform = glGetUniformLocation(shader.getID(), "texture"); glUniform1i(uniform, 1); glActiveTexture(GL_TEXTURE2); uniform = glGetUniformLocation(shader.getID(), "extraTexture"); glUniform1i(uniform, 2); shader.release(); }
public void bindUniforms(List<Light> lights) { if (lights.size() > 10) { System.err.println("Too many lights."); return; } float[] positions = new float[10 * 2]; float[] colors = new float[10 * 3]; float[] intensities = new float[10]; for (int i = 0; i < lights.size() * 2; i += 2) { positions[i] = lights.get(i >> 1).getX() - lights.get(i >> 1).getXOffset(); positions[i + 1] = GameSettings.height - lights.get(i >> 1).getY() + lights.get(i >> 1).getYOffset(); } for (int i = 0; i < lights.size(); i++) { intensities[i] = lights.get(i).intensity; } for (int i = 0; i < lights.size() * 3; i += 3) { colors[i] = lights.get(i / 3).vc.x; colors[i + 1] = lights.get(i / 3).vc.y; colors[i + 2] = lights.get(i / 3).vc.z; } shader.bind(); int uniform = glGetUniformLocation(shader.getID(), "lightPosition"); glUniform2(uniform, Buffer.createFloatBuffer(positions)); uniform = glGetUniformLocation(shader.getID(), "lightColor"); glUniform3(uniform, Buffer.createFloatBuffer(colors)); uniform = glGetUniformLocation(shader.getID(), "lightIntensity"); glUniform1(uniform, Buffer.createFloatBuffer(intensities)); shader.release(); }
public void bindUniforms(Light light) { shader.bind(); light.bindUniforms(shader.getID(), 999); shader.setUniform1f("extraLevel", this.extraLevel); shader.release(); }