Attempt to fix texture rendering on OpenGL 1.1 cards

This commit is contained in:
Enrico Turri 2018-06-21 13:03:53 +02:00
parent 4fcbb73141
commit b139f38784
3 changed files with 28 additions and 5 deletions

View file

@ -396,6 +396,9 @@ void GLVolume::render_using_layer_height() const
GLsizei half_w = w / 2;
GLsizei half_h = h / 2;
//#######################################################################################################################
::glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
//#######################################################################################################################
glBindTexture(GL_TEXTURE_2D, layer_height_texture_data.texture_id);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA8, half_w, half_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
@ -1582,6 +1585,9 @@ unsigned int _3DScene::TextureBase::finalize()
{
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());

View file

@ -498,7 +498,9 @@ void GLCanvas3D::Bed::_render_prusa(float theta) const
::glEnable(GL_BLEND);
::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// ::glEnable(GL_TEXTURE_2D);
//#######################################################################################################################
::glEnable(GL_TEXTURE_2D);
//#######################################################################################################################
::glEnableClientState(GL_VERTEX_ARRAY);
::glEnableClientState(GL_TEXTURE_COORD_ARRAY);
@ -519,7 +521,9 @@ void GLCanvas3D::Bed::_render_prusa(float theta) const
::glDisableClientState(GL_TEXTURE_COORD_ARRAY);
::glDisableClientState(GL_VERTEX_ARRAY);
// ::glDisable(GL_TEXTURE_2D);
//#######################################################################################################################
::glDisable(GL_TEXTURE_2D);
//#######################################################################################################################
::glDisable(GL_BLEND);
}
@ -983,6 +987,9 @@ void GLCanvas3D::LayersEditing::_render_active_object_annotations(const GLCanvas
GLsizei half_w = w / 2;
GLsizei half_h = h / 2;
//#######################################################################################################################
::glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
//#######################################################################################################################
::glBindTexture(GL_TEXTURE_2D, m_z_texture_id);
::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
::glTexImage2D(GL_TEXTURE_2D, 1, GL_RGBA8, half_w, half_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);
@ -1555,7 +1562,9 @@ bool GLCanvas3D::init(bool useVBOs, bool use_legacy_opengl)
if (m_gizmos.is_enabled() && !m_gizmos.init())
return false;
::glEnable(GL_TEXTURE_2D);
//#######################################################################################################################
// ::glEnable(GL_TEXTURE_2D);
//#######################################################################################################################
m_initialized = true;

View file

@ -72,6 +72,10 @@ bool GLTexture::load_from_file(const std::string& filename, bool generate_mipmap
}
// sends data to gpu
//#######################################################################################################################
::glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
//#######################################################################################################################
::glGenTextures(1, &m_id);
::glBindTexture(GL_TEXTURE_2D, m_id);
::glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)m_width, (GLsizei)m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const void*)data.data());
@ -132,7 +136,9 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo
::glDisable(GL_LIGHTING);
::glEnable(GL_BLEND);
::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
// ::glEnable(GL_TEXTURE_2D);
//#######################################################################################################################
::glEnable(GL_TEXTURE_2D);
//#######################################################################################################################
::glBindTexture(GL_TEXTURE_2D, (GLuint)tex_id);
@ -145,7 +151,9 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo
::glBindTexture(GL_TEXTURE_2D, 0);
// ::glDisable(GL_TEXTURE_2D);
//#######################################################################################################################
::glDisable(GL_TEXTURE_2D);
//#######################################################################################################################
::glDisable(GL_BLEND);
::glEnable(GL_LIGHTING);
}