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

Class MyWindow

Source/1-GraphicsAPI/09-Blend/Source/main.cpp:11–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected