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

Function main

Source/1-GraphicsAPI/14-Offscreen/Source/main.cpp:13–134  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11};
12
13int main(int argc, char **argv)
14{
15 qputenv("QSG_INFO", "1");
16 QApplication app(argc, argv);
17
18 QSharedPointer<QRhiEx> rhi = QRhiEx::newRhiEx();
19 QScopedPointer<QRhiTexture> renderTargetTexture;
20 QScopedPointer<QRhiTextureRenderTarget> renderTarget;
21 QScopedPointer<QRhiRenderPassDescriptor> renderTargetDesc;
22
23 {
24 renderTargetTexture.reset(rhi->newTexture(QRhiTexture::RGBA8, QSize(1280, 720), 1, QRhiTexture::RenderTarget | QRhiTexture::UsedAsTransferSource));
25 renderTargetTexture->create();
26 renderTarget.reset(rhi->newTextureRenderTarget({ renderTargetTexture.get() }));
27 renderTargetDesc.reset(renderTarget->newCompatibleRenderPassDescriptor());
28 renderTarget->setRenderPassDescriptor(renderTargetDesc.get());
29 renderTarget->create();
30 }
31
32
33 QScopedPointer<QRhiBuffer> vertexBuffer;
34 QScopedPointer<QRhiShaderResourceBindings> shaderBindings;
35 QScopedPointer<QRhiGraphicsPipeline> mPipeline;
36
37 {
38 vertexBuffer.reset(rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, sizeof(VertexData)));
39 vertexBuffer->create();
40
41 shaderBindings.reset(rhi->newShaderResourceBindings());
42 shaderBindings->create();
43
44 mPipeline.reset(rhi->newGraphicsPipeline());
45
46 QRhiGraphicsPipeline::TargetBlend targetBlend;
47 targetBlend.enable = false;
48 mPipeline->setTargetBlends({ QRhiGraphicsPipeline::TargetBlend() });
49
50 mPipeline->setSampleCount(renderTarget->sampleCount());
51
52 mPipeline->setDepthTest(false);
53 mPipeline->setDepthOp(QRhiGraphicsPipeline::Always);
54 mPipeline->setDepthWrite(false);
55
56 QShader vs = rhi->newShaderFromCode(QShader::VertexStage, R"(#version 440
57 layout(location = 0) in vec2 position;
58 out gl_PerVertex {
59 vec4 gl_Position;
60 };
61 void main(){
62 gl_Position = vec4(position,0.0f,1.0f);
63 }
64 )");
65 Q_ASSERT(vs.isValid());
66
67 QShader fs = rhi->newShaderFromCode(QShader::FragmentStage, R"(#version 440
68 layout(location = 0) out vec4 fragColor;
69 void main(){
70 fragColor = vec4(0.1f,0.5f,0.9f,1.0f);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected