summaryrefslogtreecommitdiffstats
path: root/examples/shader-toy
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-04-05 13:31:05 -0700
committerGitHub <noreply@github.com>2021-04-05 13:31:05 -0700
commit086ecf41fa21138899960bb9805bc8ced91690f0 (patch)
treec98af81ffc28371a9334e71987a85f9e88bce678 /examples/shader-toy
parentdd662f5cda97e7a6720ef526509a772a06112d4a (diff)
Transient root shader object. (#1782)
Diffstat (limited to 'examples/shader-toy')
-rw-r--r--examples/shader-toy/main.cpp12
1 files changed, 5 insertions, 7 deletions
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<gfx::IShaderProgram>& outS
}
ComPtr<IShaderProgram> gShaderProgram;
-ComPtr<gfx::IShaderObject> gRootObject[kSwapchainImageCount];
ComPtr<gfx::IPipelineState> gPipelineState;
ComPtr<gfx::IBufferResource> 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);