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(); }
void main(){ drawPly(); //drawLine(); }