| 55 | } |
| 56 | |
| 57 | void AlphaSortGL::clearTransparencyTextures() const |
| 58 | { |
| 59 | if ( !inited_ ) |
| 60 | return; |
| 61 | #ifndef __EMSCRIPTEN__ |
| 62 | GL_EXEC( glBindBuffer( GL_SHADER_STORAGE_BUFFER, transparency_shared_shader_data_vbo ) ); |
| 63 | GL_EXEC( glBindBufferBase( GL_SHADER_STORAGE_BUFFER, 0, transparency_shared_shader_data_vbo ) ); |
| 64 | GL_EXEC( glBindBuffer( GL_SHADER_STORAGE_BUFFER, 0 ) ); // unbind |
| 65 | |
| 66 | const GLuint zero = 0; |
| 67 | GL_EXEC( glBindBuffer( GL_ATOMIC_COUNTER_BUFFER, transparency_atomic_counter_vbo ) ); |
| 68 | GL_EXEC( glBufferData( GL_ATOMIC_COUNTER_BUFFER, sizeof( GLuint ), &zero, GL_DYNAMIC_DRAW ) ); |
| 69 | GL_EXEC( glBindBufferBase( GL_ATOMIC_COUNTER_BUFFER, 0, transparency_atomic_counter_vbo ) ); |
| 70 | GL_EXEC( glBindBuffer( GL_ATOMIC_COUNTER_BUFFER, 0 ) ); // unbind |
| 71 | |
| 72 | GL_EXEC( glBindBuffer( GL_PIXEL_UNPACK_BUFFER, transparency_static_clean_vbo ) ); |
| 73 | GL_EXEC( glBindTexture( GL_TEXTURE_2D, transparency_heads_texture_vbo ) ); |
| 74 | GL_EXEC( glTexSubImage2D( GL_TEXTURE_2D, 0, 0, 0, |
| 75 | GLuint( width_ ), GLuint( height_ ), |
| 76 | GL_RED_INTEGER, GL_UNSIGNED_INT, NULL ) ); |
| 77 | GL_EXEC( glBindBuffer( GL_PIXEL_UNPACK_BUFFER, 0 ) ); // unbind |
| 78 | #endif |
| 79 | } |
| 80 | |
| 81 | void AlphaSortGL::drawTransparencyTextureToScreen() const |
| 82 | { |