3D scene toolbar uses a single texture

This commit is contained in:
Enrico Turri 2018-07-31 12:25:00 +02:00
parent 55e7a1af46
commit 1c0fa19824
72 changed files with 690 additions and 271 deletions

View file

@ -12,6 +12,10 @@
namespace Slic3r {
namespace GUI {
//###################################################################################################################################
GLTexture::Quad_UVs GLTexture::FullTextureUVs = { { 0.0f, 1.0f }, { 1.0f, 1.0f }, { 1.0f, 0.0f }, { 0.0f, 0.0f } };
//###################################################################################################################################
GLTexture::GLTexture()
: m_id(0)
, m_width(0)
@ -128,6 +132,34 @@ const std::string& GLTexture::get_source() const
}
void GLTexture::render_texture(unsigned int tex_id, float left, float right, float bottom, float top)
{
//###################################################################################################################################
render_sub_texture(tex_id, left, right, bottom, top, FullTextureUVs);
// ::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_QUADS);
// ::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);
// ::glEnd();
//
// ::glBindTexture(GL_TEXTURE_2D, 0);
//
// ::glDisable(GL_TEXTURE_2D);
// ::glDisable(GL_BLEND);
//###################################################################################################################################
}
//###################################################################################################################################
void GLTexture::render_sub_texture(unsigned int tex_id, float left, float right, float bottom, float top, const GLTexture::Quad_UVs& uvs)
{
::glEnable(GL_BLEND);
::glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
@ -138,10 +170,10 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo
::glBindTexture(GL_TEXTURE_2D, (GLuint)tex_id);
::glBegin(GL_QUADS);
::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(uvs.left_bottom.u, uvs.left_bottom.v); ::glVertex2f(left, bottom);
::glTexCoord2f(uvs.right_bottom.u, uvs.right_bottom.v); ::glVertex2f(right, bottom);
::glTexCoord2f(uvs.right_top.u, uvs.right_top.v); ::glVertex2f(right, top);
::glTexCoord2f(uvs.left_top.u, uvs.left_top.v); ::glVertex2f(left, top);
::glEnd();
::glBindTexture(GL_TEXTURE_2D, 0);
@ -149,6 +181,7 @@ void GLTexture::render_texture(unsigned int tex_id, float left, float right, flo
::glDisable(GL_TEXTURE_2D);
::glDisable(GL_BLEND);
}
//###################################################################################################################################
unsigned int GLTexture::_generate_mipmaps(wxImage& image)
{