diff --git a/image.frag b/image.frag index 6e5916a..40b9836 100644 --- a/image.frag +++ b/image.frag @@ -5,10 +5,12 @@ varying vec2 qt_TexCoord0; uniform vec2 scale; uniform float a; uniform int stretch; +uniform bool bw; void main(void) { vec4 color = texture2D(qt_Texture0, qt_TexCoord0); + if(bw)color = color.rrra; color = color*scale.x + scale.y; max(color, vec4(0.0f)); diff --git a/imagescrollareagl.cpp b/imagescrollareagl.cpp index 2198b14..1ca426b 100644 --- a/imagescrollareagl.cpp +++ b/imagescrollareagl.cpp @@ -64,6 +64,7 @@ void ImageWidget::setImage(RawImage *image) break; } m_image->generateMipMaps(); + m_bwImg = true; update(); } @@ -79,6 +80,7 @@ void ImageWidget::setImage(const QPixmap &pixmap) m_image->setMinMagFilters(QOpenGLTexture::LinearMipMapLinear, QOpenGLTexture::Linear); m_image->setWrapMode(QOpenGLTexture::ClampToBorder); m_image->setBorderColor(0, 0, 0, 0); + m_bwImg = false; update(); } @@ -167,6 +169,7 @@ void ImageWidget::paintGL() m_program->setUniformValue("stretch", m_stretch); m_program->setUniformValue("a", m_param); m_program->setUniformValue("zoom", 1.0f/m_scale); + m_program->setUniformValue("bw", m_bwImg); m_image->bind(0); f->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); diff --git a/imagescrollareagl.h b/imagescrollareagl.h index 5a48d9d..603125c 100644 --- a/imagescrollareagl.h +++ b/imagescrollareagl.h @@ -40,6 +40,7 @@ class ImageWidget : public QOpenGLWidget float m_scale; float m_param; bool m_blockRepaint; + bool m_bwImg; public: explicit ImageWidget(QWidget *parent = nullptr); ~ImageWidget();