示例#1
0
文件: Tile.java 项目: joaogl/LD29
  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();
  }
示例#2
0
文件: Tile.java 项目: joaogl/LD29
  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();
  }
示例#3
0
文件: Tile.java 项目: joaogl/LD29
 public void bindUniforms(Light light) {
   shader.bind();
   light.bindUniforms(shader.getID(), 999);
   shader.setUniform1f("extraLevel", this.extraLevel);
   shader.release();
 }