diff options
| author | Matthias Melcher <github@matthiasm.com> | 2023-08-02 20:24:46 +0200 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2023-08-02 20:24:46 +0200 |
| commit | 79d3b8d69d019ffc19c63eba621dd8d10560e47b (patch) | |
| tree | b388d8181a3066b4695355c12da394ee06ba6cce | |
| parent | e49f2008a68569567ecb73531ada55281b4b88a8 (diff) | |
#762: saves all frequently used OpenGL attributes
When rendering the OpenGL layer, this prepares the FLTK rendering
parameters and restores them after FLTK rendering.
| -rw-r--r-- | src/Fl_Gl_Window.cxx | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/Fl_Gl_Window.cxx b/src/Fl_Gl_Window.cxx index edcf45f0d..a3c2641bd 100644 --- a/src/Fl_Gl_Window.cxx +++ b/src/Fl_Gl_Window.cxx @@ -354,13 +354,11 @@ void Fl_Gl_Window::draw_begin() { valid(1); } - glPushAttrib(GL_ENABLE_BIT); - glPushAttrib(GL_TRANSFORM_BIT); + glPushAttrib(GL_ALL_ATTRIB_BITS); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); -// glOrtho(-0.5, w()-0.5, h()-0.5, -0.5, -1, 1); glOrtho(0.0, w(), h(), 0.0, -1.0, 1.0); glMatrixMode(GL_MODELVIEW); @@ -368,6 +366,8 @@ void Fl_Gl_Window::draw_begin() { glLoadIdentity(); glDisable(GL_DEPTH_TEST); + glDisable(GL_LIGHTING); + glDisable(GL_TEXTURE_2D); glEnable(GL_POINT_SMOOTH); glLineWidth((GLfloat)(drv->pixels_per_unit_*drv->line_width_)); @@ -375,7 +375,6 @@ void Fl_Gl_Window::draw_begin() { glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); if (!pGlWindowDriver->need_scissor()) glDisable(GL_SCISSOR_TEST); - // TODO: all of the settings should be saved on the GL stack } /** @@ -389,8 +388,7 @@ void Fl_Gl_Window::draw_end() { glMatrixMode(GL_PROJECTION); glPopMatrix(); - glPopAttrib(); // GL_TRANSFORM_BIT - glPopAttrib(); // GL_ENABLE_BIT + glPopAttrib(); // GL_ALL_ATTRIB_BITS Fl_Surface_Device::pop_current(); if (mode() & FL_OPENGL3) pGlWindowDriver->switch_back(); |
