MCPcopy Create free account
hub / github.com/YACReader/yacreader / initialize

Method initialize

common/rhi/yacreader_flow_rhi.cpp:112–235  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110}
111
112void YACReaderFlow3D::initialize(QRhiCommandBuffer *cb)
113{
114 auto newRhi = rhi();
115 if (m_rhi != newRhi) {
116 scene.reset();
117 m_rhi = newRhi;
118 }
119
120 if (m_rhi == nullptr)
121 return;
122
123 // Helper to get or create resource update batch
124 auto getResourceBatch = [this]() {
125 if (scene.resourceUpdates == nullptr)
126 scene.resourceUpdates = m_rhi->nextResourceUpdateBatch();
127 return scene.resourceUpdates;
128 };
129
130 // Initialize default texture from image
131 if (!scene.defaultTexture) {
132 QImage defaultImage = QImage(":/images/defaultCover.png").convertToFormat(QImage::Format_RGBA8888);
133
134 scene.defaultTexture.reset(m_rhi->newTexture(QRhiTexture::RGBA8, defaultImage.size(), 1, QRhiTexture::MipMapped | QRhiTexture::UsedWithGenerateMips));
135 scene.defaultTexture->create();
136 getResourceBatch()->uploadTexture(scene.defaultTexture.get(), defaultImage);
137 getResourceBatch()->generateMips(scene.defaultTexture.get());
138 qDebug() << "YACReaderFlow3D: Created defaultTexture" << defaultImage.size();
139 }
140
141 if (ribbonTexturesDirty || (!readRibbonImage.isNull() && !scene.markTexture) || (!readingRibbonImage.isNull() && !scene.readingTexture))
142 syncRibbonTextures(getResourceBatch());
143
144 // Create vertex buffer (quad geometry)
145 if (!scene.vertexBuffer) {
146 // Use a triangle list (two triangles = 6 vertices) because some RHI backends
147 // don't support TriangleFan. Each vertex: x,y,z,u,v (5 floats).
148 scene.vertexBuffer.reset(m_rhi->newBuffer(QRhiBuffer::Immutable, QRhiBuffer::VertexBuffer, 6 * 5 * sizeof(float)));
149 scene.vertexBuffer->create();
150
151 // Two triangles forming a quad (triangle list):
152 // Tri 1: bottom-left, bottom-right, top-right
153 // Tri 2: bottom-left, top-right, top-left
154 float vertices[] = {
155 // Position (x, y, z), TexCoord (u, v)
156 -0.5f, -0.5f, 0.0f, 0.0f, 1.0f, // Bottom-left
157 0.5f, -0.5f, 0.0f, 1.0f, 1.0f, // Bottom-right
158 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, // Top-right
159
160 -0.5f, -0.5f, 0.0f, 0.0f, 1.0f, // Bottom-left
161 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, // Top-right
162 -0.5f, 0.5f, 0.0f, 0.0f, 0.0f // Top-left
163 };
164
165 getResourceBatch()->uploadStaticBuffer(scene.vertexBuffer.get(), vertices);
166 }
167
168 // Initialize alignment for uniform buffers
169 if (scene.alignedUniformSize == 0) {

Callers

nothing calls this directly

Calls 3

resetMethod · 0.45
createMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected