Skip to content

Commit

Permalink
Restore non-textured shapes drawing.
Browse files Browse the repository at this point in the history
  • Loading branch information
j-jorge committed Feb 16, 2017
1 parent cba0710 commit c7d4db7
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 26 deletions.
8 changes: 6 additions & 2 deletions bear-engine/core/src/visual/code/gl_draw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,9 @@ namespace bear
}
}

bear::visual::gl_draw::gl_draw()
: m_vertex_count( 0 ),
bear::visual::gl_draw::gl_draw( GLuint white )
: m_white( white ),
m_vertex_count( 0 ),
m_color_count( 0 ),
m_texture_coordinate_count( 0 )
{
Expand Down Expand Up @@ -137,6 +138,9 @@ void bear::visual::gl_draw::draw( GLenum mode, GLuint first, GLuint count )
if ( m_vertex_count == 0 )
return;

if ( m_texture_coordinate_count == 0 )
glBindTexture( GL_TEXTURE_2D, m_white );

generate_indices();

glDrawElements
Expand Down
63 changes: 43 additions & 20 deletions bear-engine/core/src/visual/code/gl_renderer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -818,9 +818,45 @@ bool bear::visual::gl_renderer::ensure_window_exists()

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
VISUAL_GL_ERROR_THROW();
m_draw = new gl_draw();

// setup the render buffer
create_drawing_helper();
setup_render_buffer();
setup_frame_buffer();

resize_view( m_window_size );

release_context();

m_mutex.gl_access.unlock();

m_shader.restore
( detail::get_default_fragment_shader_code(),
detail::get_default_vertex_shader_code() );

assign_transform_matrix();

return true;
} // gl_renderer::ensure_window_exists()

void bear::visual::gl_renderer::create_drawing_helper()
{
GLuint texture;
glGenTextures( 1, &texture );
VISUAL_GL_ERROR_THROW();

glBindTexture( GL_TEXTURE_2D, texture );
VISUAL_GL_ERROR_THROW();

glTexImage2D
( GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE,
&claw::graphic::white_pixel );
VISUAL_GL_ERROR_THROW();

m_draw = new gl_draw( texture );
}

void bear::visual::gl_renderer::setup_render_buffer()
{
glGenRenderbuffers( 1, &m_screenshot_render_buffer );
VISUAL_GL_ERROR_THROW();

Expand All @@ -832,8 +868,10 @@ bool bear::visual::gl_renderer::ensure_window_exists()
VISUAL_GL_ERROR_THROW();

glBindRenderbuffer( GL_RENDERBUFFER, 0 );

// setup the frame buffer
}

void bear::visual::gl_renderer::setup_frame_buffer()
{
glGenFramebuffers( 1, &m_screenshot_frame_buffer );
VISUAL_GL_ERROR_THROW();

Expand All @@ -851,22 +889,7 @@ bool bear::visual::gl_renderer::ensure_window_exists()

glBindFramebuffer( GL_FRAMEBUFFER, 0 );
VISUAL_GL_ERROR_THROW();

resize_view( m_window_size );

release_context();

m_mutex.gl_access.unlock();

m_shader.restore
( detail::get_default_fragment_shader_code(),
detail::get_default_vertex_shader_code() );

assign_transform_matrix();

return true;
} // gl_renderer::ensure_window_exists()

}
void bear::visual::gl_renderer::assign_transform_matrix()
{
assert( m_shader.is_valid() );
Expand Down
3 changes: 0 additions & 3 deletions bear-engine/core/src/visual/code/gl_state.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,6 @@ void bear::visual::gl_state::draw_shape( gl_draw& output ) const
set_colors( output );
set_vertices( output );

glBindTexture( GL_TEXTURE_2D, 0 );
VISUAL_GL_ERROR_THROW();

output.draw( get_gl_render_mode(), 0, get_vertex_count() );
} // gl_state::draw_shape()

Expand Down
4 changes: 3 additions & 1 deletion bear-engine/core/src/visual/gl_draw.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ namespace bear
class gl_draw
{
public:
gl_draw();
explicit gl_draw( GLuint white );

void prepare();
void finalize();
Expand All @@ -26,6 +26,8 @@ namespace bear
void generate_indices();

private:
const GLuint m_white;

GLuint m_buffers[ 4 ];
std::vector< GLushort > m_indices;

Expand Down
3 changes: 3 additions & 0 deletions bear-engine/core/src/visual/gl_renderer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,9 @@ namespace bear
std::size_t y, std::size_t w, std::size_t h );

bool ensure_window_exists();
void create_drawing_helper();
void setup_render_buffer();
void setup_frame_buffer();
void assign_transform_matrix();

screen_size_type get_best_screen_size() const;
Expand Down

0 comments on commit c7d4db7

Please sign in to comment.