MCPcopy Create free account
hub / github.com/NVIDIA-RTX/Donut-Samples / BasicTriangle

Class BasicTriangle

examples/basic_triangle/basic_triangle.cpp:34–107  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

32static const char* g_WindowTitle = "Donut Example: Basic Triangle";
33
34class BasicTriangle : public app::IRenderPass
35{
36private:
37 nvrhi::ShaderHandle m_VertexShader;
38 nvrhi::ShaderHandle m_PixelShader;
39 nvrhi::GraphicsPipelineHandle m_Pipeline;
40 nvrhi::CommandListHandle m_CommandList;
41
42public:
43 using IRenderPass::IRenderPass;
44
45 bool Init()
46 {
47 std::filesystem::path appShaderPath = app::GetDirectoryWithExecutable() / "shaders/basic_triangle" / app::GetShaderTypeName(GetDevice()->getGraphicsAPI());
48
49 auto nativeFS = std::make_shared<vfs::NativeFileSystem>();
50 engine::ShaderFactory shaderFactory(GetDevice(), nativeFS, appShaderPath);
51
52 m_VertexShader = shaderFactory.CreateShader("shaders.hlsl", "main_vs", nullptr, nvrhi::ShaderType::Vertex);
53 m_PixelShader = shaderFactory.CreateShader("shaders.hlsl", "main_ps", nullptr, nvrhi::ShaderType::Pixel);
54
55 if (!m_VertexShader || !m_PixelShader)
56 {
57 return false;
58 }
59
60 m_CommandList = GetDevice()->createCommandList();
61
62 return true;
63 }
64
65 void BackBufferResizing() override
66 {
67 m_Pipeline = nullptr;
68 }
69
70 void Animate(float fElapsedTimeSeconds) override
71 {
72 GetDeviceManager()->SetInformativeWindowTitle(g_WindowTitle);
73 }
74
75 void Render(nvrhi::IFramebuffer* framebuffer) override
76 {
77 if (!m_Pipeline)
78 {
79 nvrhi::GraphicsPipelineDesc psoDesc;
80 psoDesc.VS = m_VertexShader;
81 psoDesc.PS = m_PixelShader;
82 psoDesc.primType = nvrhi::PrimitiveType::TriangleList;
83 psoDesc.renderState.depthStencilState.depthTestEnable = false;
84
85 m_Pipeline = GetDevice()->createGraphicsPipeline(psoDesc, framebuffer->getFramebufferInfo());
86 }
87
88 m_CommandList->open();
89
90 nvrhi::utils::ClearColorAttachment(m_CommandList, framebuffer, 0, nvrhi::Color(0.f));
91

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected