mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	5th Attempt to fix texture rendering on OpenGL 1.1 cards
This commit is contained in:
		
							parent
							
								
									15c69a90ec
								
							
						
					
					
						commit
						de540de9aa
					
				
					 4 changed files with 27 additions and 8 deletions
				
			
		|  | @ -1417,7 +1417,7 @@ void GLCanvas3D::Gizmos::_render_overlay(const GLCanvas3D& canvas) const | |||
|     for (GizmosMap::const_iterator it = m_gizmos.begin(); it != m_gizmos.end(); ++it) | ||||
|     { | ||||
|         float tex_size = (float)it->second->get_textures_size() * OverlayTexturesScale * inv_zoom; | ||||
|         GLTexture::render_texture(it->second->get_textures_id(), top_x, top_x + tex_size, top_y - tex_size, top_y); | ||||
|         GLTexture::render_texture(it->second->get_texture_id(), top_x, top_x + tex_size, top_y - tex_size, top_y); | ||||
|         top_y -= (tex_size + scaled_gap_y); | ||||
|     } | ||||
| } | ||||
|  | @ -3592,6 +3592,7 @@ void GLCanvas3D::_render_legend_texture() const | |||
|             float t = (0.5f * (float)cnv_size.get_height()) * inv_zoom; | ||||
|             float r = l + (float)w * inv_zoom; | ||||
|             float b = t - (float)h * inv_zoom; | ||||
| 
 | ||||
|             GLTexture::render_texture(tex_id, l, r, b, t); | ||||
| 
 | ||||
|             ::glPopMatrix(); | ||||
|  |  | |||
|  | @ -92,7 +92,7 @@ void GLGizmoBase::set_state(GLGizmoBase::EState state) | |||
|     m_state = state; | ||||
| } | ||||
| 
 | ||||
| unsigned int GLGizmoBase::get_textures_id() const | ||||
| unsigned int GLGizmoBase::get_texture_id() const | ||||
| { | ||||
|     return m_textures[m_state].get_id(); | ||||
| } | ||||
|  |  | |||
|  | @ -57,7 +57,7 @@ public: | |||
|     EState get_state() const; | ||||
|     void set_state(EState state); | ||||
| 
 | ||||
|     unsigned int get_textures_id() const; | ||||
|     unsigned int get_texture_id() const; | ||||
|     int get_textures_size() const; | ||||
| 
 | ||||
|     int get_hover_id() const; | ||||
|  |  | |||
|  | @ -72,7 +72,6 @@ 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); | ||||
|  | @ -131,16 +130,35 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo | |||
| { | ||||
|     ::glEnable(GL_BLEND); | ||||
|     ::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | ||||
| 
 | ||||
|     ::glEnable(GL_TEXTURE_2D); | ||||
|     ::glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); | ||||
| 
 | ||||
|     ::glBindTexture(GL_TEXTURE_2D, (GLuint)tex_id); | ||||
| 
 | ||||
| //###############################################################################################################################
 | ||||
|     ::glBegin(GL_TRIANGLES); | ||||
|     ::glTexCoord2f(0.0f, 1.0f); ::glVertex2f(left, bottom); | ||||
|     ::glTexCoord2f(1.0f, 1.0f); ::glVertex2f(right, bottom); | ||||
|     ::glTexCoord2f(1.0f, 0.0f); ::glVertex2f(right, top); | ||||
| 
 | ||||
|     ::glTexCoord2f(1.0f, 0.0f); ::glVertex2f(right, top); | ||||
|     ::glTexCoord2f(0.0f, 0.0f); ::glVertex2f(left, top); | ||||
|     ::glTexCoord2f(0.0f, 1.0f); ::glVertex2f(left, bottom); | ||||
| 
 | ||||
| /*
 | ||||
|     ::glBegin(GL_QUADS); | ||||
|     ::glTexCoord2f(0.0f, 1.0f); ::glVertex3f(left, bottom, 0.0f); | ||||
|     ::glTexCoord2f(1.0f, 1.0f); ::glVertex3f(right, bottom, 0.0f); | ||||
|     ::glTexCoord2f(1.0f, 0.0f); ::glVertex3f(right, top, 0.0f); | ||||
|     ::glTexCoord2f(0.0f, 0.0f); ::glVertex3f(left, top, 0.0f); | ||||
|     ::glTexCoord2f(0.0f, 1.0f); ::glVertex2f(left, bottom); | ||||
|     ::glTexCoord2f(1.0f, 1.0f); ::glVertex2f(right, bottom); | ||||
|     ::glTexCoord2f(1.0f, 0.0f); ::glVertex2f(right, top); | ||||
|     ::glTexCoord2f(0.0f, 0.0f); ::glVertex2f(left, top); | ||||
| */ | ||||
| 
 | ||||
| //    ::glTexCoord2f(0.0f, 1.0f); ::glVertex3f(left, bottom, 0.0f);
 | ||||
| //    ::glTexCoord2f(1.0f, 1.0f); ::glVertex3f(right, bottom, 0.0f);
 | ||||
| //    ::glTexCoord2f(1.0f, 0.0f); ::glVertex3f(right, top, 0.0f);
 | ||||
| //    ::glTexCoord2f(0.0f, 0.0f); ::glVertex3f(left, top, 0.0f);
 | ||||
| //###############################################################################################################################
 | ||||
|     ::glEnd(); | ||||
| 
 | ||||
|     ::glBindTexture(GL_TEXTURE_2D, 0); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Enrico Turri
						Enrico Turri