Object Memory management small optimization
This commit is contained in:
+17
-7
@@ -1213,10 +1213,15 @@ static void free_index_buffer(GLuint buffer) {
|
||||
|
||||
disp_manager->check_index_buffer(buffer);
|
||||
|
||||
GLint size;
|
||||
gl_state.bind_element_array_buffer(buffer);
|
||||
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
|
||||
gl_state.bind_element_array_buffer(0);
|
||||
GLint size = 0;
|
||||
if (DIVA_GL_VERSION_4_5)
|
||||
glGetNamedBufferParameteriv(buffer, GL_BUFFER_SIZE, &size);
|
||||
else {
|
||||
gl_state.bind_element_array_buffer(buffer);
|
||||
glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
|
||||
gl_state.bind_element_array_buffer(0);
|
||||
}
|
||||
|
||||
bufobj_mgr.ib_all_size -= size;
|
||||
|
||||
glDeleteBuffers(1, &buffer);
|
||||
@@ -1230,9 +1235,14 @@ static void free_vertex_buffer(GLuint buffer) {
|
||||
disp_manager->check_vertex_buffer(buffer);
|
||||
|
||||
GLint size = 0;
|
||||
gl_state.bind_array_buffer(buffer);
|
||||
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
|
||||
gl_state.bind_array_buffer(0);
|
||||
if (DIVA_GL_VERSION_4_5)
|
||||
glGetNamedBufferParameteriv(buffer, GL_BUFFER_SIZE, &size);
|
||||
else {
|
||||
gl_state.bind_array_buffer(buffer);
|
||||
glGetBufferParameteriv(GL_ARRAY_BUFFER, GL_BUFFER_SIZE, &size);
|
||||
gl_state.bind_array_buffer(0);
|
||||
}
|
||||
|
||||
bufobj_mgr.vb_all_size -= size;
|
||||
|
||||
glDeleteBuffers(1, &buffer);
|
||||
|
||||
@@ -228,13 +228,13 @@ namespace spr {
|
||||
}
|
||||
|
||||
SpriteManager::RenderData::~RenderData() {
|
||||
ebo.Destroy();
|
||||
vbo.Destroy();
|
||||
|
||||
if (vao[0]) {
|
||||
glDeleteVertexArrays(3, vao);
|
||||
vao[0] = 0;
|
||||
}
|
||||
|
||||
ebo.Destroy();
|
||||
vbo.Destroy();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
|
||||
@@ -2469,6 +2469,7 @@ PFNGLNAMEDBUFFERSUBDATAPROC divagl_glNamedBufferSubData = 0;
|
||||
PFNGLMAPNAMEDBUFFERPROC divagl_glMapNamedBuffer = 0;
|
||||
PFNGLMAPNAMEDBUFFERRANGEPROC divagl_glMapNamedBufferRange = 0;
|
||||
PFNGLUNMAPNAMEDBUFFERPROC divagl_glUnmapNamedBuffer = 0;
|
||||
PFNGLGETNAMEDBUFFERPARAMETERIVPROC divagl_glGetNamedBufferParameteriv = 0;
|
||||
PFNGLTEXTURESUBIMAGE2DPROC divagl_glTextureSubImage2D = 0;
|
||||
PFNGLGENERATETEXTUREMIPMAPPROC divagl_glGenerateTextureMipmap = 0;
|
||||
PFNGLBINDTEXTUREUNITPROC divagl_glBindTextureUnit = 0;
|
||||
@@ -2624,6 +2625,7 @@ HOOK(void, FASTCALL, wglGetProcAddresses, 0x0000000140461B50) {
|
||||
glMapNamedBuffer = (PFNGLMAPNAMEDBUFFERPROC)wglGetProcAddressDLL("glMapNamedBuffer");
|
||||
glMapNamedBufferRange = (PFNGLMAPNAMEDBUFFERRANGEPROC)wglGetProcAddressDLL("glMapNamedBufferRange");
|
||||
glUnmapNamedBuffer = (PFNGLUNMAPNAMEDBUFFERPROC)wglGetProcAddressDLL("glUnmapNamedBuffer");
|
||||
glGetNamedBufferParameteriv = (PFNGLGETNAMEDBUFFERPARAMETERIVPROC)wglGetProcAddressDLL("glGetNamedBufferParameteriv");
|
||||
glTextureSubImage2D = (PFNGLTEXTURESUBIMAGE2DPROC)wglGetProcAddressDLL("glTextureSubImage2D");
|
||||
glGenerateTextureMipmap = (PFNGLGENERATETEXTUREMIPMAPPROC)wglGetProcAddressDLL("glGenerateTextureMipmap");
|
||||
glBindTextureUnit = (PFNGLBINDTEXTUREUNITPROC)wglGetProcAddressDLL("glBindTextureUnit");
|
||||
|
||||
@@ -1262,6 +1262,7 @@ typedef void (GLAPIENTRY* PFNGLNAMEDBUFFERSUBDATAPROC) (GLuint buffer, GLintptr
|
||||
typedef void* (GLAPIENTRY* PFNGLMAPNAMEDBUFFERPROC) (GLuint buffer, GLenum access);
|
||||
typedef void* (GLAPIENTRY* PFNGLMAPNAMEDBUFFERRANGEPROC) (GLuint buffer, GLintptr offset, GLsizeiptr length, GLbitfield access);
|
||||
typedef GLboolean (GLAPIENTRY* PFNGLUNMAPNAMEDBUFFERPROC) (GLuint buffer);
|
||||
typedef void (GLAPIENTRY* PFNGLGETNAMEDBUFFERPARAMETERIVPROC)(GLuint buffer, GLenum pname, GLint* params);
|
||||
typedef void (GLAPIENTRY* PFNGLTEXTURESUBIMAGE2DPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void* pixels);
|
||||
typedef void (GLAPIENTRY* PFNGLGENERATETEXTUREMIPMAPPROC) (GLuint texture);
|
||||
typedef void (GLAPIENTRY* PFNGLBINDTEXTUREUNITPROC) (GLuint unit, GLuint texture);
|
||||
@@ -2520,6 +2521,7 @@ extern PFNGLNAMEDBUFFERSUBDATAPROC divagl_glNamedBufferSubData;
|
||||
extern PFNGLMAPNAMEDBUFFERPROC divagl_glMapNamedBuffer;
|
||||
extern PFNGLMAPNAMEDBUFFERRANGEPROC divagl_glMapNamedBufferRange;
|
||||
extern PFNGLUNMAPNAMEDBUFFERPROC divagl_glUnmapNamedBuffer;
|
||||
extern PFNGLGETNAMEDBUFFERPARAMETERIVPROC divagl_glGetNamedBufferParameteriv;
|
||||
extern PFNGLTEXTURESUBIMAGE2DPROC divagl_glTextureSubImage2D;
|
||||
extern PFNGLGENERATETEXTUREMIPMAPPROC divagl_glGenerateTextureMipmap;
|
||||
extern PFNGLBINDTEXTUREUNITPROC divagl_glBindTextureUnit;
|
||||
@@ -3778,6 +3780,7 @@ extern PFNGLBINDTEXTUREUNITPROC divagl_glBindTextureUnit;
|
||||
#define glMapNamedBuffer divagl_glMapNamedBuffer
|
||||
#define glMapNamedBufferRange divagl_glMapNamedBufferRange
|
||||
#define glUnmapNamedBuffer divagl_glUnmapNamedBuffer
|
||||
#define glGetNamedBufferParameteriv divagl_glGetNamedBufferParameteriv
|
||||
#define glTextureSubImage2D divagl_glTextureSubImage2D
|
||||
#define glGenerateTextureMipmap divagl_glGenerateTextureMipmap
|
||||
#define glBindTextureUnit divagl_glBindTextureUnit
|
||||
|
||||
Reference in New Issue
Block a user