bool WrappedOpenGL::Serialise_glNamedFramebufferTextureLayerEXT(GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer) { SERIALISE_ELEMENT(GLenum, Attach, attachment); SERIALISE_ELEMENT(ResourceId, id, GetResourceManager()->GetID(TextureRes(GetCtx(), texture))); SERIALISE_ELEMENT(int32_t, Level, level); SERIALISE_ELEMENT(int32_t, Layer, layer); SERIALISE_ELEMENT(ResourceId, fbid, (framebuffer == 0 ? ResourceId() : GetResourceManager()->GetID(FramebufferRes(GetCtx(), framebuffer)))); if(m_State < WRITING) { GLResource res = GetResourceManager()->GetLiveResource(id); if(fbid == ResourceId()) { glNamedFramebufferTextureLayerEXT(0, Attach, res.name, Level, Layer); } else { GLResource fbres = GetResourceManager()->GetLiveResource(fbid); glNamedFramebufferTextureLayerEXT(fbres.name, Attach, res.name, Level, Layer); } if(m_State == READING) { m_Textures[GetResourceManager()->GetLiveID(id)].creationFlags |= eTextureCreate_RTV; } } return true; }
void FramebufferImplementation_DirectStateAccessEXT::attachTextureLayer(const Framebuffer * fbo, GLenum attachment, Texture * texture, GLint level, GLint layer) const { glNamedFramebufferTextureLayerEXT(fbo->id(), attachment, texture ? texture->id() : 0, level, layer); }