From 01bf455e68fa341362cb260c3d2e0ec598c41680 Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 27 Aug 2016 17:36:31 -0400 Subject: [PATCH] Use an OpenGL array object to draw the cursor --- src/gui/Window.cc | 23 ++++++++++++++--------- src/gui/Window.h | 2 ++ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/gui/Window.cc b/src/gui/Window.cc index fbd2576..01b7db3 100644 --- a/src/gui/Window.cc +++ b/src/gui/Window.cc @@ -123,8 +123,12 @@ bool Window::create(std::shared_ptr buffer) m_font.get_advance(), 0, m_font.get_advance(), m_font.get_line_height(), 0, m_font.get_line_height()}; + m_cursor_array = glcxx::Array::create(); + m_cursor_array->bind(); m_cursor_buffer = glcxx::Buffer::create(GL_ARRAY_BUFFER, GL_STATIC_DRAW, cursor_bounds, sizeof(cursor_bounds)); + glEnableVertexAttribArray(0); + glVertexAttribPointer(0, 2, GL_INT, GL_FALSE, 0, 0); m_buffer = buffer; m_cursor = m_buffer->piece_table->add_cursor(); @@ -276,15 +280,7 @@ void Window::redraw() glClearColor (0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); - glBindVertexArray(0); - m_shaders.flat->use(); - m_shaders.flat->set_color(1.0, 0.2, 1.0, 1.0); - m_shaders.flat->set_position(0, m_height - m_font.get_line_height()); - m_cursor_buffer->bind(); - glEnableVertexAttribArray(0); - glVertexAttribPointer(0, 2, GL_INT, GL_FALSE, 0, 0); - glDrawArrays(GL_TRIANGLE_FAN, 0, 4); - + draw_cursor(); m_shaders.text->use(); int advance = m_font.get_advance(); @@ -324,3 +320,12 @@ void Window::redraw() SDL_GL_SwapWindow(m_window); } + +void Window::draw_cursor() +{ + m_cursor_array->bind(); + m_shaders.flat->use(); + m_shaders.flat->set_color(1.0, 0.2, 1.0, 1.0); + m_shaders.flat->set_position(0, m_height - m_font.get_line_height()); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); +} diff --git a/src/gui/Window.h b/src/gui/Window.h index 050d1d5..50cbc18 100644 --- a/src/gui/Window.h +++ b/src/gui/Window.h @@ -17,6 +17,7 @@ public: protected: void resize(); void redraw(); + void draw_cursor(); void handle_event(SDL_Event & event); void handle_key(uint32_t scancode, uint32_t mod); void scroll_down(); @@ -38,6 +39,7 @@ protected: std::shared_ptr m_buffer; + std::shared_ptr m_cursor_array; std::shared_ptr m_cursor_buffer; std::shared_ptr m_cursor;