diff options
author | chai <chaifix@163.com> | 2021-10-27 09:47:44 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2021-10-27 09:47:44 +0800 |
commit | e6a15decac22912900d2cbd2e5525229b92bb55a (patch) | |
tree | 16462535a26bdb9aa08c0604bdfd42f81933ad83 /Runtime/Graphics/Texture.cpp | |
parent | 0035e0d47bbce8311d3a4e559e74b8cdc5209d47 (diff) |
*gl error handle
Diffstat (limited to 'Runtime/Graphics/Texture.cpp')
-rw-r--r-- | Runtime/Graphics/Texture.cpp | 19 |
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()
|