mirror of
https://github.com/lubosz/overte.git
synced 2025-08-07 19:21:16 +02:00
clean the usage of glCopyImageSubData and provide a fall back for 4.2)
This commit is contained in:
parent
8a40e951ac
commit
9e95944195
1 changed files with 10 additions and 28 deletions
|
@ -439,35 +439,17 @@ void GL45Texture::stripToMip(uint16_t newMinMip) {
|
||||||
{
|
{
|
||||||
PROFILE_RANGE(render_gpu_gl, "Blit");
|
PROFILE_RANGE(render_gpu_gl, "Blit");
|
||||||
// Preferred path only available in 4.3
|
// Preferred path only available in 4.3
|
||||||
if (GLEW_VERSION_4_3) {
|
for (uint16 targetMip = _minMip; targetMip <= _maxMip; ++targetMip) {
|
||||||
for (uint16 targetMip = _minMip; targetMip <= _maxMip; ++targetMip) {
|
uint16 sourceMip = targetMip + mipDelta;
|
||||||
uint16 sourceMip = targetMip + mipDelta;
|
Vec3u mipDimensions = _gpuObject.evalMipDimensions(targetMip + _mipOffset);
|
||||||
Vec3u mipDimensions = _gpuObject.evalMipDimensions(targetMip + _mipOffset);
|
for (GLenum target : getFaceTargets(_target)) {
|
||||||
for (GLenum target : getFaceTargets(_target)) {
|
glCopyImageSubData(
|
||||||
glCopyImageSubData(
|
oldId, target, sourceMip, 0, 0, 0,
|
||||||
oldId, target, sourceMip, 0, 0, 0,
|
_id, target, targetMip, 0, 0, 0,
|
||||||
_id, target, targetMip, 0, 0, 0,
|
mipDimensions.x, mipDimensions.y, 1
|
||||||
mipDimensions.x, mipDimensions.y, 1
|
);
|
||||||
);
|
(void)CHECK_GL_ERROR();
|
||||||
(void)CHECK_GL_ERROR();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
GLuint fbo { 0 };
|
|
||||||
glCreateFramebuffers(1, &fbo);
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo);
|
|
||||||
for (uint16 targetMip = _minMip; targetMip <= _maxMip; ++targetMip) {
|
|
||||||
uint16 sourceMip = targetMip + mipDelta;
|
|
||||||
Vec3u mipDimensions = _gpuObject.evalMipDimensions(targetMip + _mipOffset);
|
|
||||||
for (GLenum target : getFaceTargets(_target)) {
|
|
||||||
glFramebufferTexture2D(GL_READ_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, target, oldId, sourceMip);
|
|
||||||
(void)CHECK_GL_ERROR();
|
|
||||||
glCopyTextureSubImage2D(_id, targetMip, 0, 0, 0, 0, mipDimensions.x, mipDimensions.y);
|
|
||||||
(void)CHECK_GL_ERROR();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
|
||||||
glDeleteFramebuffers(1, &fbo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
glDeleteTextures(1, &oldId);
|
glDeleteTextures(1, &oldId);
|
||||||
|
|
Loading…
Reference in a new issue