MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / EnsureArrayTarget

Function EnsureArrayTarget

engine/PoseidonGL33/EngineGL33_ShadowDepth.cpp:148–187  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

146}
147
148bool EnsureArrayTarget(int res, int layers)
149{
150 if (s_arrFbo && s_arrRes == res && s_arrLayers == layers)
151 return true;
152 if (s_arrTex)
153 {
154 glDeleteTextures(1, &s_arrTex);
155 s_arrTex = 0;
156 }
157 if (s_arrFbo)
158 {
159 glDeleteFramebuffers(1, &s_arrFbo);
160 s_arrFbo = 0;
161 }
162
163 glGenTextures(1, &s_arrTex);
164 glBindTexture(GL_TEXTURE_2D_ARRAY, s_arrTex);
165 glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_DEPTH_COMPONENT24, res, res, layers, 0, GL_DEPTH_COMPONENT, GL_FLOAT,
166 nullptr);
167 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
168 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
169 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
170 glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
171
172 glGenFramebuffers(1, &s_arrFbo);
173 glBindFramebuffer(GL_FRAMEBUFFER, s_arrFbo);
174 glFramebufferTextureLayer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, s_arrTex, 0, 0);
175 glDrawBuffer(GL_NONE);
176 glReadBuffer(GL_NONE);
177 GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
178 glBindFramebuffer(GL_FRAMEBUFFER, 0);
179 if (status != GL_FRAMEBUFFER_COMPLETE)
180 {
181 LOG_ERROR(Graphics, "GL33 cascade FBO incomplete: {}", static_cast<unsigned>(status));
182 return false;
183 }
184 s_arrRes = res;
185 s_arrLayers = layers;
186 return true;
187}
188
189bool EnsureMesh()
190{

Callers 1

RenderCascadeArrayFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected