diff options
-rw-r--r-- | src/qcam/assets/shader/YUV_2_planes.frag | 4 | ||||
-rw-r--r-- | src/qcam/viewfinder_gl.cpp | 40 |
2 files changed, 22 insertions, 22 deletions
diff --git a/src/qcam/assets/shader/YUV_2_planes.frag b/src/qcam/assets/shader/YUV_2_planes.frag index 125f1c85..254463c0 100644 --- a/src/qcam/assets/shader/YUV_2_planes.frag +++ b/src/qcam/assets/shader/YUV_2_planes.frag @@ -26,9 +26,9 @@ void main(void) yuv.x = texture2D(tex_y, textureOut).r - 0.063; #if defined(YUV_PATTERN_UV) yuv.y = texture2D(tex_u, textureOut).r - 0.500; - yuv.z = texture2D(tex_u, textureOut).g - 0.500; + yuv.z = texture2D(tex_u, textureOut).a - 0.500; #elif defined(YUV_PATTERN_VU) - yuv.y = texture2D(tex_u, textureOut).g - 0.500; + yuv.y = texture2D(tex_u, textureOut).a - 0.500; yuv.z = texture2D(tex_u, textureOut).r - 0.500; #else #error Invalid pattern diff --git a/src/qcam/viewfinder_gl.cpp b/src/qcam/viewfinder_gl.cpp index e7c8620c..add87db8 100644 --- a/src/qcam/viewfinder_gl.cpp +++ b/src/qcam/viewfinder_gl.cpp @@ -481,11 +481,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[0]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width(), size_.height(), 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_); shaderProgram_.setUniformValue(textureUniformY_, 0); @@ -495,11 +495,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[1]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RG, + GL_LUMINANCE_ALPHA, size_.width() / horzSubSample_, size_.height() / vertSubSample_, 0, - GL_RG, + GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, data_ + size_.width() * size_.height()); shaderProgram_.setUniformValue(textureUniformU_, 1); @@ -511,11 +511,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[0]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width(), size_.height(), 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_); shaderProgram_.setUniformValue(textureUniformY_, 0); @@ -525,11 +525,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[1]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width() / horzSubSample_, size_.height() / vertSubSample_, 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_ + size_.width() * size_.height()); shaderProgram_.setUniformValue(textureUniformU_, 1); @@ -539,11 +539,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[2]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width() / horzSubSample_, size_.height() / vertSubSample_, 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_ + size_.width() * size_.height() * 5 / 4); shaderProgram_.setUniformValue(textureUniformV_, 2); @@ -555,11 +555,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[0]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width(), size_.height(), 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_); shaderProgram_.setUniformValue(textureUniformY_, 0); @@ -569,11 +569,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[2]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width() / horzSubSample_, size_.height() / vertSubSample_, 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_ + size_.width() * size_.height()); shaderProgram_.setUniformValue(textureUniformV_, 2); @@ -583,11 +583,11 @@ void ViewFinderGL::doRender() configureTexture(*textures_[1]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, size_.width() / horzSubSample_, size_.height() / vertSubSample_, 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_ + size_.width() * size_.height() * 5 / 4); shaderProgram_.setUniformValue(textureUniformU_, 1); @@ -674,18 +674,18 @@ void ViewFinderGL::doRender() case libcamera::formats::SRGGB12_CSI2P: /* * Raw Bayer 8-bit, and packed raw Bayer 10-bit/12-bit formats - * are stored in GL_RED texture. - * The texture width is equal to the stride. + * are stored in a GL_LUMINANCE texture. The texture width is + * equal to the stride. */ glActiveTexture(GL_TEXTURE0); configureTexture(*textures_[0]); glTexImage2D(GL_TEXTURE_2D, 0, - GL_RED, + GL_LUMINANCE, stride_, size_.height(), 0, - GL_RED, + GL_LUMINANCE, GL_UNSIGNED_BYTE, data_); shaderProgram_.setUniformValue(textureUniformY_, 0); |