From 266a4413bdcb680b253f9dc19d5ecadcd2d0beeb Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 22 Jun 2018 09:42:56 +0200 Subject: [PATCH] 4th Attempt to fix texture rendering on OpenGL 1.1 cards --- xs/src/slic3r/GUI/3DScene.cpp | 18 +++++++++++++++--- xs/src/slic3r/GUI/GLCanvas3D.cpp | 6 ------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp index 0c06b476c..23bce332b 100644 --- a/xs/src/slic3r/GUI/3DScene.cpp +++ b/xs/src/slic3r/GUI/3DScene.cpp @@ -1583,14 +1583,26 @@ GUI::GLCanvas3DManager _3DScene::s_canvas_mgr; unsigned int _3DScene::TextureBase::finalize() { - if (!m_data.empty()) { +//####################################################################################################################### + if ((m_tex_id == 0) && !m_data.empty()) { +// if (!m_data.empty()) { +//####################################################################################################################### // sends buffer to gpu //####################################################################################################################### // ::glPixelStorei(GL_UNPACK_ALIGNMENT, 1); //####################################################################################################################### ::glGenTextures(1, &m_tex_id); - ::glBindTexture(GL_TEXTURE_2D, m_tex_id); - ::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)m_tex_width, (GLsizei)m_tex_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const GLvoid*)m_data.data()); +//####################################################################################################################### + ::glBindTexture(GL_TEXTURE_2D, (GLuint)m_tex_id); +// ::glBindTexture(GL_TEXTURE_2D, m_tex_id); +//####################################################################################################################### +//####################################################################################################################### + ::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)m_tex_width, (GLsizei)m_tex_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)m_data.data()); + + std::cout << "loaded texture: " << m_tex_width << ", " << m_tex_height << std::endl; + +// ::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)m_tex_width, (GLsizei)m_tex_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const GLvoid*)m_data.data()); +//####################################################################################################################### ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); ::glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1); diff --git a/xs/src/slic3r/GUI/GLCanvas3D.cpp b/xs/src/slic3r/GUI/GLCanvas3D.cpp index bf8a9412f..6fb44f44d 100644 --- a/xs/src/slic3r/GUI/GLCanvas3D.cpp +++ b/xs/src/slic3r/GUI/GLCanvas3D.cpp @@ -3548,9 +3548,6 @@ void GLCanvas3D::_render_warning_texture() const unsigned int h = _3DScene::get_warning_texture_height(); if ((w > 0) && (h > 0)) { -//############################################################################################################################### - ::glDisable(GL_LIGHTING); -//############################################################################################################################### ::glDisable(GL_DEPTH_TEST); ::glPushMatrix(); ::glLoadIdentity(); @@ -3584,9 +3581,6 @@ void GLCanvas3D::_render_legend_texture() const unsigned int h = _3DScene::get_legend_texture_height(); if ((w > 0) && (h > 0)) { -//############################################################################################################################### - ::glDisable(GL_LIGHTING); -//############################################################################################################################### ::glDisable(GL_DEPTH_TEST); ::glPushMatrix(); ::glLoadIdentity();