From 086ecf41fa21138899960bb9805bc8ced91690f0 Mon Sep 17 00:00:00 2001 From: Yong He Date: Mon, 5 Apr 2021 13:31:05 -0700 Subject: Transient root shader object. (#1782) --- examples/shader-toy/main.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'examples/shader-toy/main.cpp') diff --git a/examples/shader-toy/main.cpp b/examples/shader-toy/main.cpp index a142c3c15..40c97e0f4 100644 --- a/examples/shader-toy/main.cpp +++ b/examples/shader-toy/main.cpp @@ -286,7 +286,6 @@ Result loadShaderProgram(gfx::IDevice* device, ComPtr& outS } ComPtr gShaderProgram; -ComPtr gRootObject[kSwapchainImageCount]; ComPtr gPipelineState; ComPtr gVertexBuffer; @@ -371,10 +370,7 @@ virtual void renderFrame(int frameIndex) override uniforms.iResolution[1] = float(windowHeight); } - gRootObject[frameIndex] = gDevice->createRootShaderObject(gShaderProgram); - auto constantBuffer = gRootObject[frameIndex]->getObject(ShaderOffset()); - constantBuffer->setData(ShaderOffset(), &uniforms, sizeof(uniforms)); - + // Encode render commands. auto encoder = commandBuffer->encodeRenderCommands(gRenderPass, gFramebuffers[frameIndex]); @@ -383,8 +379,10 @@ virtual void renderFrame(int frameIndex) override viewport.extentX = (float)windowWidth; viewport.extentY = (float)windowHeight; encoder->setViewportAndScissor(viewport); - encoder->setPipelineState(gPipelineState); - encoder->bindRootShaderObject(gRootObject[frameIndex]); + auto rootObject = encoder->bindPipeline(gPipelineState); + auto constantBuffer = rootObject->getObject(ShaderOffset()); + constantBuffer->setData(ShaderOffset(), &uniforms, sizeof(uniforms)); + encoder->setVertexBuffer(0, gVertexBuffer, sizeof(FullScreenTriangle::Vertex)); encoder->setPrimitiveTopology(PrimitiveTopology::TriangleList); encoder->draw(3); -- cgit v1.2.3