예제 #1
0
파일: Tile.java 프로젝트: joaogl/LD29
  protected void compile() {
    vao = glGenVertexArrays();
    glBindVertexArray(vao);
    {
      vbo = glGenBuffers();
      glBindBuffer(GL_ARRAY_BUFFER, vbo);
      {
        glBufferData(GL_ARRAY_BUFFER, Buffer.createFloatBuffer(vertices), GL_STATIC_DRAW);
        glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
      }
      glBindBuffer(GL_ARRAY_BUFFER, 0);

      vio = glGenBuffers();
      glBindBuffer(GL_ARRAY_BUFFER, vio);
      {
        glBufferData(GL_ARRAY_BUFFER, Buffer.createByteBuffer(indices), GL_STATIC_DRAW);
      }
      glBindBuffer(GL_ARRAY_BUFFER, 0);

      vto = glGenBuffers();
      glBindBuffer(GL_ARRAY_BUFFER, vto);
      {
        glBufferData(GL_ARRAY_BUFFER, Buffer.createByteBuffer(texCoords), GL_STATIC_DRAW);
        glVertexAttribPointer(1, 3, GL_UNSIGNED_BYTE, false, 0, 1);
      }
      glBindBuffer(GL_ARRAY_BUFFER, 0);
    }
    glBindVertexArray(0);
  }
예제 #2
0
파일: Player.java 프로젝트: joaogl/LD29
  protected void compile() {
    vao = glGenVertexArrays();
    glBindVertexArray(vao);
    {
      vbo = glGenBuffers();
      glBindBuffer(GL_ARRAY_BUFFER, vbo);
      {
        glBufferData(GL_ARRAY_BUFFER, Buffer.createFloatBuffer(vertices), GL_STATIC_DRAW);
        glVertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0);
      }
      glBindBuffer(GL_ARRAY_BUFFER, 0);

      vio = glGenBuffers();
      glBindBuffer(GL_ARRAY_BUFFER, vio);
      {
        glBufferData(GL_ARRAY_BUFFER, Buffer.createByteBuffer(indices), GL_STATIC_DRAW);
      }
      glBindBuffer(GL_ARRAY_BUFFER, 0);

      vto = glGenBuffers();
      glBindBuffer(GL_ARRAY_BUFFER, vto);
      {
        glBufferData(GL_ARRAY_BUFFER, Buffer.createByteBuffer(texCoords), GL_STATIC_DRAW);
        glVertexAttribPointer(1, 3, GL_UNSIGNED_BYTE, false, 0, 1);
      }
      glBindBuffer(GL_ARRAY_BUFFER, 0);
    }
    glBindVertexArray(0);

    glActiveTexture(GL_TEXTURE1);
    shader.bind();
    int uniform = glGetUniformLocation(shader.getID(), "texture");
    glUniform1i(uniform, 1);
    shader.release();
  }
예제 #3
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();
  }