Corrected some issues

- Support compiling for OpenGL 1.1
- Free meshes/materials memory after usage...
This commit is contained in:
Ray 2019-04-01 18:22:56 +02:00
parent 86212e8462
commit f1cbdd6b3a
2 changed files with 19 additions and 3 deletions

View file

@ -682,6 +682,9 @@ void UnloadModel(Model model)
{ {
for (int i = 0; i < model.meshCount; i++) UnloadMesh(&model.meshes[i]); for (int i = 0; i < model.meshCount; i++) UnloadMesh(&model.meshes[i]);
for (int i = 0; i < model.materialCount; i++) UnloadMaterial(model.materials[i]); for (int i = 0; i < model.materialCount; i++) UnloadMaterial(model.materials[i]);
free(model.meshes);
free(model.materials);
free(model.meshMaterial); free(model.meshMaterial);
TraceLog(LOG_INFO, "Unloaded model data from RAM and VRAM"); TraceLog(LOG_INFO, "Unloaded model data from RAM and VRAM");

View file

@ -2036,6 +2036,8 @@ unsigned int rlLoadTexture(void *data, int width, int height, int format, int mi
unsigned int rlLoadTextureDepth(int width, int height, int bits, bool useRenderBuffer) unsigned int rlLoadTextureDepth(int width, int height, int bits, bool useRenderBuffer)
{ {
unsigned int id = 0; unsigned int id = 0;
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
unsigned int glInternalFormat = GL_DEPTH_COMPONENT16; unsigned int glInternalFormat = GL_DEPTH_COMPONENT16;
if ((bits != 16) && (bits != 24) && (bits != 32)) bits = 16; if ((bits != 16) && (bits != 24) && (bits != 32)) bits = 16;
@ -2081,6 +2083,7 @@ unsigned int rlLoadTextureDepth(int width, int height, int bits, bool useRenderB
glBindRenderbuffer(GL_RENDERBUFFER, 0); glBindRenderbuffer(GL_RENDERBUFFER, 0);
} }
#endif
return id; return id;
} }
@ -2093,6 +2096,7 @@ unsigned int rlLoadTextureCubemap(void *data, int size, int format)
unsigned int cubemapId = 0; unsigned int cubemapId = 0;
unsigned int dataSize = GetPixelDataSize(size, size, format); unsigned int dataSize = GetPixelDataSize(size, size, format);
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
glGenTextures(1, &cubemapId); glGenTextures(1, &cubemapId);
glBindTexture(GL_TEXTURE_CUBE_MAP, cubemapId); glBindTexture(GL_TEXTURE_CUBE_MAP, cubemapId);
@ -2137,6 +2141,7 @@ unsigned int rlLoadTextureCubemap(void *data, int size, int format)
#endif #endif
glBindTexture(GL_TEXTURE_CUBE_MAP, 0); glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
#endif
return cubemapId; return cubemapId;
} }
@ -2221,9 +2226,9 @@ RenderTexture2D rlLoadRenderTexture(int width, int height, int format, int depth
{ {
RenderTexture2D target = { 0 }; RenderTexture2D target = { 0 };
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
if (useDepthTexture && texDepthSupported) target.depthTexture = true; if (useDepthTexture && texDepthSupported) target.depthTexture = true;
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
// Create the framebuffer object // Create the framebuffer object
glGenFramebuffers(1, &target.id); glGenFramebuffers(1, &target.id);
glBindFramebuffer(GL_FRAMEBUFFER, target.id); glBindFramebuffer(GL_FRAMEBUFFER, target.id);
@ -2274,6 +2279,7 @@ RenderTexture2D rlLoadRenderTexture(int width, int height, int format, int depth
// NOTE: Attach type: 0-Color, 1-Depth renderbuffer, 2-Depth texture // NOTE: Attach type: 0-Color, 1-Depth renderbuffer, 2-Depth texture
void rlRenderTextureAttach(RenderTexture2D target, unsigned int id, int attachType) void rlRenderTextureAttach(RenderTexture2D target, unsigned int id, int attachType)
{ {
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
glBindFramebuffer(GL_FRAMEBUFFER, target.id); glBindFramebuffer(GL_FRAMEBUFFER, target.id);
if (attachType == 0) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, id, 0); if (attachType == 0) glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, id, 0);
@ -2284,11 +2290,15 @@ void rlRenderTextureAttach(RenderTexture2D target, unsigned int id, int attachTy
} }
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
#endif
} }
// Verify render texture is complete // Verify render texture is complete
bool rlRenderTextureComplete(RenderTexture target) bool rlRenderTextureComplete(RenderTexture target)
{ {
bool result = false;
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
glBindFramebuffer(GL_FRAMEBUFFER, target.id); glBindFramebuffer(GL_FRAMEBUFFER, target.id);
GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER); GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
@ -2309,7 +2319,10 @@ bool rlRenderTextureComplete(RenderTexture target)
glBindFramebuffer(GL_FRAMEBUFFER, 0); glBindFramebuffer(GL_FRAMEBUFFER, 0);
return (status == GL_FRAMEBUFFER_COMPLETE); result = (status == GL_FRAMEBUFFER_COMPLETE);
#endif
return result;
} }
// Generate mipmap data for selected texture // Generate mipmap data for selected texture