diff options
author | Enrico Turri <enricoturri@seznam.cz> | 2018-07-31 13:25:00 +0300 |
---|---|---|
committer | Enrico Turri <enricoturri@seznam.cz> | 2018-07-31 13:25:00 +0300 |
commit | 1c0fa198245eb27554b85b82e1b4fa43c7f18a3e (patch) | |
tree | e6a1cb75750370e1fd944191716c0f35c1c4c6e5 /xs/src/slic3r/GUI/GLTexture.cpp | |
parent | 55e7a1af4621dc8c09e9bdff8f5a6d5d8d5b00e6 (diff) |
3D scene toolbar uses a single texture
Diffstat (limited to 'xs/src/slic3r/GUI/GLTexture.cpp')
-rw-r--r-- | xs/src/slic3r/GUI/GLTexture.cpp | 41 |
1 files changed, 37 insertions, 4 deletions
diff --git a/xs/src/slic3r/GUI/GLTexture.cpp b/xs/src/slic3r/GUI/GLTexture.cpp index 18c9f5dea..03890d780 100644 --- a/xs/src/slic3r/GUI/GLTexture.cpp +++ b/xs/src/slic3r/GUI/GLTexture.cpp @@ -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) @@ -129,6 +133,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) { |