54 QOpenGLContext& glctx, QRhiTexture& outTex,
const void* src,
59 const auto nt = outTex.nativeTexture();
62 auto* f = glctx.extraFunctions();
66 const auto sz = outTex.pixelSize();
67 const GLenum fmt = bgra ? GL_BGRA : GL_RGBA;
68 f->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
69 f->glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
70 f->glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
71 f->glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
72 f->glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
73 f->glBindTexture(GL_TEXTURE_2D,
static_cast<GLuint
>(nt.object));
75 GL_TEXTURE_2D, 0, 0, 0, sz.width(), sz.height(), fmt, GL_UNSIGNED_BYTE,
77 f->glBindTexture(GL_TEXTURE_2D, 0);
91 QOpenGLContext& glctx, QRhiTexture& outTex, std::uint32_t srcGlBuffer,
96 const auto nt = outTex.nativeTexture();
99 auto* f = glctx.extraFunctions();
103 const auto sz = outTex.pixelSize();
104 const GLenum fmt = bgra ? GL_BGRA : GL_RGBA;
108 f->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, srcGlBuffer);
109 f->glBindTexture(GL_TEXTURE_2D,
static_cast<GLuint
>(nt.object));
111 GL_TEXTURE_2D, 0, 0, 0, sz.width(), sz.height(), fmt, GL_UNSIGNED_BYTE,
113 f->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
114 f->glBindTexture(GL_TEXTURE_2D, 0);
void uploadClientToGLTexture(QOpenGLContext &glctx, QRhiTexture &outTex, const void *src, bool bgra) noexcept
Upload one captured frame from client memory into a QRhi GL texture.
Definition GLCaptureUpload.hpp:53
void uploadGLBufferToGLTexture(QOpenGLContext &glctx, QRhiTexture &outTex, std::uint32_t srcGlBuffer, bool bgra) noexcept
Upload one captured frame from a GL buffer (bound as PIXEL_UNPACK_BUFFER) into a QRhi GL texture.
Definition GLCaptureUpload.hpp:90