@@ -595,7 +595,7 @@ class WebGLBackend extends Backend {
595
595
596
596
}
597
597
598
- } else if ( resolveDepthBuffer === false ) {
598
+ } else if ( resolveDepthBuffer === false && renderTargetContextData . framebuffers ) {
599
599
600
600
const fb = renderTargetContextData . framebuffers [ renderContext . getCacheKey ( ) ] ;
601
601
state . bindFramebuffer ( gl . DRAW_FRAMEBUFFER , fb ) ;
@@ -2075,7 +2075,7 @@ class WebGLBackend extends Backend {
2075
2075
2076
2076
} else {
2077
2077
2078
- if ( hasExternalTextures && useMultisampledRTT ) {
2078
+ if ( useMultisampledRTT ) {
2079
2079
2080
2080
multisampledRTTExt . framebufferTexture2DMultisampleEXT ( gl . FRAMEBUFFER , attachment , gl . TEXTURE_2D , textureData . textureGPU , 0 , samples ) ;
2081
2081
@@ -2093,21 +2093,26 @@ class WebGLBackend extends Backend {
2093
2093
2094
2094
}
2095
2095
2096
- if ( renderTarget . isXRRenderTarget && renderTarget . autoAllocateDepthBuffer === true ) {
2096
+ const depthStyle = stencilBuffer ? gl . DEPTH_STENCIL_ATTACHMENT : gl . DEPTH_ATTACHMENT ;
2097
+
2098
+ if ( renderTarget . autoAllocateDepthBuffer === true ) {
2097
2099
2098
2100
const renderbuffer = gl . createRenderbuffer ( ) ;
2099
2101
this . textureUtils . setupRenderBufferStorage ( renderbuffer , descriptor , 0 , useMultisampledRTT ) ;
2100
2102
renderTargetContextData . xrDepthRenderbuffer = renderbuffer ;
2101
2103
depthInvalidationArray . push ( stencilBuffer ? gl . DEPTH_STENCIL_ATTACHMENT : gl . DEPTH_ATTACHMENT ) ;
2102
2104
2105
+ gl . bindRenderbuffer ( gl . RENDERBUFFER , renderbuffer ) ;
2106
+ gl . framebufferRenderbuffer ( gl . FRAMEBUFFER , depthStyle , gl . RENDERBUFFER , renderbuffer ) ;
2107
+
2108
+
2103
2109
} else {
2104
2110
2105
2111
if ( descriptor . depthTexture !== null ) {
2106
2112
2107
2113
depthInvalidationArray . push ( stencilBuffer ? gl . DEPTH_STENCIL_ATTACHMENT : gl . DEPTH_ATTACHMENT ) ;
2108
2114
2109
2115
const textureData = this . get ( descriptor . depthTexture ) ;
2110
- const depthStyle = stencilBuffer ? gl . DEPTH_STENCIL_ATTACHMENT : gl . DEPTH_ATTACHMENT ;
2111
2116
textureData . renderTarget = descriptor . renderTarget ;
2112
2117
textureData . cacheKey = cacheKey ; // required for copyTextureToTexture()
2113
2118
@@ -2166,7 +2171,7 @@ class WebGLBackend extends Backend {
2166
2171
2167
2172
// rebind external XR textures
2168
2173
2169
- if ( ( isXRRenderTarget && hasExternalTextures ) || renderTarget . multiview ) {
2174
+ if ( isXRRenderTarget || useMultisampledRTT || renderTarget . multiview ) {
2170
2175
2171
2176
state . bindFramebuffer ( gl . FRAMEBUFFER , fb ) ;
2172
2177
0 commit comments