From e6a15decac22912900d2cbd2e5525229b92bb55a Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 27 Oct 2021 09:47:44 +0800 Subject: *gl error handle --- Runtime/Graphics/Texture.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'Runtime/Graphics/Texture.cpp') diff --git a/Runtime/Graphics/Texture.cpp b/Runtime/Graphics/Texture.cpp index ce09927..8f4f245 100644 --- a/Runtime/Graphics/Texture.cpp +++ b/Runtime/Graphics/Texture.cpp @@ -16,6 +16,12 @@ Texture::Texture(LuaBind::VM* vm, TextureSetting setting, ImageData* imgData) glGenTextures(1, &m_GPUID); glBindTexture(GL_TEXTURE_2D, m_GPUID); + + CheckGLError( + glDeleteTextures(1, &m_GPUID); + glBindTexture(GL_TEXTURE_2D, 0); + throw TextureException(error); + ); switch (m_WrapMode) { case ETextureWrapMode::Clamp: @@ -36,6 +42,12 @@ Texture::Texture(LuaBind::VM* vm, TextureSetting setting, ImageData* imgData) break; } + CheckGLError( + glDeleteTextures(1, &m_GPUID); + glBindTexture(GL_TEXTURE_2D, 0); + throw TextureException(error); + ); + switch (m_FilterMode) { case ETextureFilterMode::Linear: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); @@ -53,6 +65,12 @@ Texture::Texture(LuaBind::VM* vm, TextureSetting setting, ImageData* imgData) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, imgData->width, imgData->height, 0, GL_RGB, GL_UNSIGNED_BYTE, imgData->pixels); + CheckGLError( + glDeleteTextures(1, &m_GPUID); + glBindTexture(GL_TEXTURE_2D, 0); + throw TextureException(error); + ); + // keep image data ? if (m_KeepPixelData) { @@ -61,6 +79,7 @@ Texture::Texture(LuaBind::VM* vm, TextureSetting setting, ImageData* imgData) SetMemberRef(state, m_ImageData, -1); state.Pop(1); } + } Texture::~Texture() -- cgit v1.1-26-g67d0