diff --git a/src/renderer/gl_engine/tvgGlRenderTask.cpp b/src/renderer/gl_engine/tvgGlRenderTask.cpp index 3c35335d..674c02da 100644 --- a/src/renderer/gl_engine/tvgGlRenderTask.cpp +++ b/src/renderer/gl_engine/tvgGlRenderTask.cpp @@ -236,4 +236,4 @@ void GlDrawBlitTask::run() GL_CHECK(glBindFramebuffer(GL_FRAMEBUFFER, getTargetFbo())); GlRenderTask::run(); -} \ No newline at end of file +} diff --git a/src/renderer/gl_engine/tvgGlRenderer.cpp b/src/renderer/gl_engine/tvgGlRenderer.cpp index 809f0343..c1052c47 100644 --- a/src/renderer/gl_engine/tvgGlRenderer.cpp +++ b/src/renderer/gl_engine/tvgGlRenderer.cpp @@ -329,11 +329,13 @@ RenderData GlRenderer::prepare(Surface* image, const RenderMesh* mesh, RenderDat sdata->viewHt = static_cast(surface.h); sdata->updateFlag = flags; - sdata->texId = _genTexture(image); - sdata->opacity = opacity; - sdata->texColorSpace = image->cs; - sdata->texFlipY = (mesh && mesh->triangleCnt) ? 0 : 1; - sdata->geometry = make_unique(); + if (sdata->texId == 0) { + sdata->texId = _genTexture(image); + sdata->opacity = opacity; + sdata->texColorSpace = image->cs; + sdata->texFlipY = (mesh && mesh->triangleCnt) ? 0 : 1; + sdata->geometry = make_unique(); + } sdata->geometry->updateTransform(transform, sdata->viewWd, sdata->viewHt); sdata->geometry->setViewport(RenderRegion{ @@ -706,7 +708,7 @@ void GlRenderer::prepareBlitTask(GlBlitTask* task) void GlRenderer::prepareCmpTask(GlRenderTask* task) { // we use 1:1 blit mapping since compositor fbo is same size as root fbo - Array vertices(5 * 4); + Array vertices(4 * 4); float left = -1.f; float top = 1.f; @@ -744,7 +746,7 @@ void GlRenderer::prepareCmpTask(GlRenderTask* task) indices.push(3); uint32_t vertexOffset = mGpuBuffer->push(vertices.data, vertices.count * sizeof(float)); - uint32_t indexOffset = mGpuBuffer->push(indices.data, vertices.count * sizeof(uint32_t)); + uint32_t indexOffset = mGpuBuffer->push(indices.data, indices.count * sizeof(uint32_t)); task->addVertexLayout(GlVertexLayout{0, 2, 4 * sizeof(float), vertexOffset}); task->addVertexLayout(GlVertexLayout{1, 2, 4 * sizeof(float), vertexOffset + 2 * sizeof(float)});