blob: ae8134601e0f507eb76023c99025e4fde10ffc02 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
// Copyright (C) 2018 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
#ifndef TRIANGLEONCUBERENDERER_H
#define TRIANGLEONCUBERENDERER_H
#include "trianglerenderer.h"
class TriangleOnCubeRenderer
{
public:
void setRhi(QRhi *r) { m_r = r; }
void setSampleCount(int samples) { m_sampleCount = samples; }
void setTranslation(const QVector3D &v) { m_translation = v; }
void initResources(QRhiRenderPassDescriptor *rp);
void releaseResources();
void resize(const QSize &pixelSize);
void queueResourceUpdates(QRhiResourceUpdateBatch *resourceUpdates);
void queueOffscreenPass(QRhiCommandBuffer *cb);
void queueDraw(QRhiCommandBuffer *cb, const QSize &outputSizeInPixels);
private:
QRhi *m_r;
QRhiBuffer *m_vbuf = nullptr;
bool m_vbufReady = false;
QRhiBuffer *m_ubuf = nullptr;
QRhiTexture *m_tex = nullptr;
QRhiRenderBuffer *m_ds = nullptr;
QRhiTexture *m_tex2 = nullptr;
QRhiTexture *m_depthTex = nullptr;
QRhiSampler *m_sampler = nullptr;
QRhiTextureRenderTarget *m_rt = nullptr;
QRhiRenderPassDescriptor *m_rp = nullptr;
QRhiShaderResourceBindings *m_srb = nullptr;
QRhiGraphicsPipeline *m_ps = nullptr;
QVector3D m_translation;
QMatrix4x4 m_proj;
float m_rotation = 0;
int m_sampleCount = 1; // no MSAA by default
TriangleRenderer m_offscreenTriangle;
QImage m_image;
};
#endif
|