summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/Texture.cpp
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-27 09:47:44 +0800
committerchai <chaifix@163.com>2021-10-27 09:47:44 +0800
commite6a15decac22912900d2cbd2e5525229b92bb55a (patch)
tree16462535a26bdb9aa08c0604bdfd42f81933ad83 /Runtime/Graphics/Texture.cpp
parent0035e0d47bbce8311d3a4e559e74b8cdc5209d47 (diff)
*gl error handle
Diffstat (limited to 'Runtime/Graphics/Texture.cpp')
-rw-r--r--Runtime/Graphics/Texture.cpp19
1 files changed, 19 insertions, 0 deletions
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()