MCPcopy Create free account
hub / github.com/Italink/ModernGraphicsEngineGuide / MyWindow

Class MyWindow

Source/1-GraphicsAPI/05-3D/Source/main.cpp:10–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8};
9
10class MyWindow : public QRhiWindow {
11public:
12 MyWindow(QRhiWindow::InitParams inInitParams) :QRhiWindow(inInitParams) {
13 mSigInit.request();
14 }
15private:
16 QRhiEx::Signal mSigInit;
17 QRhiEx::Signal mSigSubmit;
18
19 QScopedPointer<QRhiBuffer> mVertexBuffer;
20 QScopedPointer<QRhiBuffer> mUniformBuffer;
21
22 QScopedPointer<QRhiShaderResourceBindings> mShaderBindings;
23 QScopedPointer<QRhiGraphicsPipeline> mPipeline;
24
25protected:
26 void initRhiResource() {
27 mVertexBuffer.reset(mRhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, sizeof(CubeData)));
28 mVertexBuffer->create();
29
30 mUniformBuffer.reset(mRhi->newBuffer(QRhiBuffer::Dynamic, QRhiBuffer::UniformBuffer, sizeof(UniformBlock)));
31 mUniformBuffer->create();
32
33 mShaderBindings.reset(mRhi->newShaderResourceBindings());
34 mShaderBindings->setBindings({
35 QRhiShaderResourceBinding::uniformBuffer(0, QRhiShaderResourceBinding::VertexStage, mUniformBuffer.get())
36 });
37 mShaderBindings->create();
38
39 mPipeline.reset(mRhi->newGraphicsPipeline());
40
41 mPipeline->setSampleCount(mSwapChain->sampleCount());
42 mPipeline->setTopology(QRhiGraphicsPipeline::Triangles);
43
44 QShader vs = mRhi->newShaderFromCode(QShader::VertexStage, R"(#version 440
45 layout(location = 0) in vec3 inPosition;
46 layout(binding = 0) uniform UniformBlock{
47 mat4 MVP;
48 }UBO;
49 out gl_PerVertex { vec4 gl_Position; };
50 void main()
51 {
52 gl_Position = UBO.MVP * vec4(inPosition ,1.0f);
53 }
54 )");
55 Q_ASSERT(vs.isValid());
56
57 QShader fs = mRhi->newShaderFromCode(QShader::FragmentStage, R"(#version 440
58 layout(location = 0) out vec4 outFragColor;
59 void main()
60 {
61 outFragColor = vec4(1);
62 }
63 )");
64 Q_ASSERT(fs.isValid());
65
66 mPipeline->setShaderStages({
67 { QRhiShaderStage::Vertex, vs },

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected