Example #1
0
void Application::draw_framebuffer(const int& idx) {
  // Reset atomic counter
  glBindBufferBase(GL_ATOMIC_COUNTER_BUFFER, 0, atomic_counter_buffer[idx]);
  GLuint * data = (GLuint *)glMapBuffer(GL_ATOMIC_COUNTER_BUFFER, GL_WRITE_ONLY);
  data[0] = 0;
  glUnmapBuffer(GL_ATOMIC_COUNTER_BUFFER);

  // Clear head-pointer image
  glBindBuffer(GL_PIXEL_UNPACK_BUFFER, head_pointer_clear_buffer);
  glBindTexture(GL_TEXTURE_2D, head_pointer_texture[idx]);
  glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_width, m_height, GL_RED_INTEGER, GL_UNSIGNED_INT, NULL);
  glBindTexture(GL_TEXTURE_2D, 0);
  glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);

  // Bind head-pointer image for read-write
  glBindImageTexture(0, head_pointer_texture[idx], 0, GL_FALSE, 0, GL_READ_WRITE, GL_R32UI);

  // Bind linked-list buffer for write
  glBindImageTexture(1, linked_list_texture[idx], 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_RGBA32UI);
  //  glUseProgram(render_oreder_independece_linked_list_program);
  glUseProgram(ply_program);

  glUniform1f(0, transparency_value);
  glUniform1i(2, 0);

  // disable constant color
  glUniform1i(5, 0);

  drawPly(idx);
  glFinish();
}
Example #2
0
void main(){
	drawPly();
	//drawLine();
}