Merge branch 'raysan5:master' into master
This commit is contained in:
commit
049e3912b8
|
|
@ -3370,7 +3370,7 @@ static Model LoadOBJ(const char *fileName)
|
||||||
if (ret != TINYOBJ_SUCCESS) TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load OBJ data", fileName);
|
if (ret != TINYOBJ_SUCCESS) TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load OBJ data", fileName);
|
||||||
else TRACELOG(LOG_INFO, "MODEL: [%s] OBJ data loaded successfully: %i meshes/%i materials", fileName, meshCount, materialCount);
|
else TRACELOG(LOG_INFO, "MODEL: [%s] OBJ data loaded successfully: %i meshes/%i materials", fileName, meshCount, materialCount);
|
||||||
|
|
||||||
model.meshCount = materialCount; // TODO: REVIEW!!!
|
model.meshCount = materialCount;
|
||||||
|
|
||||||
// Init model materials array
|
// Init model materials array
|
||||||
if (materialCount > 0)
|
if (materialCount > 0)
|
||||||
|
|
@ -3389,7 +3389,7 @@ static Model LoadOBJ(const char *fileName)
|
||||||
model.meshMaterial = (int *)RL_CALLOC(model.meshCount, sizeof(int));
|
model.meshMaterial = (int *)RL_CALLOC(model.meshCount, sizeof(int));
|
||||||
|
|
||||||
// Count the faces for each material
|
// Count the faces for each material
|
||||||
int *matFaces = RL_CALLOC(meshCount, sizeof(int));
|
int *matFaces = RL_CALLOC(materialCount, sizeof(int));
|
||||||
|
|
||||||
for (unsigned int mi = 0; mi < meshCount; mi++)
|
for (unsigned int mi = 0; mi < meshCount; mi++)
|
||||||
{
|
{
|
||||||
|
|
@ -3400,7 +3400,6 @@ static Model LoadOBJ(const char *fileName)
|
||||||
matFaces[idx]++;
|
matFaces[idx]++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------
|
//--------------------------------------
|
||||||
// Create the material meshes
|
// Create the material meshes
|
||||||
|
|
||||||
|
|
|
||||||
91
src/rlgl.h
91
src/rlgl.h
|
|
@ -506,8 +506,8 @@ RLAPI void rlDisableVertexBufferElement(void); // Disable vertex buffer
|
||||||
RLAPI void rlEnableVertexAttribute(unsigned int index); // Enable vertex attribute index
|
RLAPI void rlEnableVertexAttribute(unsigned int index); // Enable vertex attribute index
|
||||||
RLAPI void rlDisableVertexAttribute(unsigned int index);// Disable vertex attribute index
|
RLAPI void rlDisableVertexAttribute(unsigned int index);// Disable vertex attribute index
|
||||||
#if defined(GRAPHICS_API_OPENGL_11)
|
#if defined(GRAPHICS_API_OPENGL_11)
|
||||||
RLAPI void rlEnableStatePointer(int vertexAttribType, void *buffer);
|
RLAPI void rlEnableStatePointer(int vertexAttribType, void *buffer); // Enable attribute state pointer
|
||||||
RLAPI void rlDisableStatePointer(int vertexAttribType);
|
RLAPI void rlDisableStatePointer(int vertexAttribType); // Disable attribute state pointer
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Textures state
|
// Textures state
|
||||||
|
|
@ -525,8 +525,11 @@ RLAPI void rlDisableShader(void); // Disable shader progra
|
||||||
// Framebuffer state
|
// Framebuffer state
|
||||||
RLAPI void rlEnableFramebuffer(unsigned int id); // Enable render texture (fbo)
|
RLAPI void rlEnableFramebuffer(unsigned int id); // Enable render texture (fbo)
|
||||||
RLAPI void rlDisableFramebuffer(void); // Disable render texture (fbo), return to default framebuffer
|
RLAPI void rlDisableFramebuffer(void); // Disable render texture (fbo), return to default framebuffer
|
||||||
|
RLAPI void rlActiveDrawBuffers(int count); // Activate multiple draw color buffers
|
||||||
|
|
||||||
// General render state
|
// General render state
|
||||||
|
RLAPI void rlEnableColorBlend(void); // Enable color blending
|
||||||
|
RLAPI void rlDisableColorBlend(void); // Disable color blending
|
||||||
RLAPI void rlEnableDepthTest(void); // Enable depth test
|
RLAPI void rlEnableDepthTest(void); // Enable depth test
|
||||||
RLAPI void rlDisableDepthTest(void); // Disable depth test
|
RLAPI void rlDisableDepthTest(void); // Disable depth test
|
||||||
RLAPI void rlEnableDepthMask(void); // Enable depth write
|
RLAPI void rlEnableDepthMask(void); // Enable depth write
|
||||||
|
|
@ -1544,6 +1547,49 @@ void rlDisableFramebuffer(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Activate multiple draw color buffers
|
||||||
|
// NOTE: One color buffer is always active by default
|
||||||
|
void rlActiveDrawBuffers(int count)
|
||||||
|
{
|
||||||
|
#if (defined(GRAPHICS_API_OPENGL_33) && defined(SUPPORT_RENDER_TEXTURES_HINT))
|
||||||
|
// NOTE: Maximum number of draw buffers supported is implementation dependant,
|
||||||
|
// it can be queried with glGet*() but it must be at least 8
|
||||||
|
//GLint maxDrawBuffers = 0;
|
||||||
|
//glGetIntegerv(GL_MAX_DRAW_BUFFERS, &maxDrawBuffers);
|
||||||
|
|
||||||
|
if (count > 0)
|
||||||
|
{
|
||||||
|
if (count > 8) TRACELOG(LOG_WARNING, "GL: Max color buffers limited to 8");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
unsigned int buffers[8] = {
|
||||||
|
GL_COLOR_ATTACHMENT0,
|
||||||
|
GL_COLOR_ATTACHMENT1,
|
||||||
|
GL_COLOR_ATTACHMENT2,
|
||||||
|
GL_COLOR_ATTACHMENT3,
|
||||||
|
GL_COLOR_ATTACHMENT4,
|
||||||
|
GL_COLOR_ATTACHMENT5,
|
||||||
|
GL_COLOR_ATTACHMENT6,
|
||||||
|
GL_COLOR_ATTACHMENT7,
|
||||||
|
};
|
||||||
|
|
||||||
|
glDrawBuffers(count, buffers);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else TRACELOG(LOG_WARNING, "GL: One color buffer active by default");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
// General render state configuration
|
||||||
|
//----------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
// Enable color blending
|
||||||
|
void rlEnableColorBlend(void) { glEnable(GL_BLEND); }
|
||||||
|
|
||||||
|
// Disable color blending
|
||||||
|
void rlDisableColorBlend(void) { glDisable(GL_BLEND); }
|
||||||
|
|
||||||
// Enable depth test
|
// Enable depth test
|
||||||
void rlEnableDepthTest(void) { glEnable(GL_DEPTH_TEST); }
|
void rlEnableDepthTest(void) { glEnable(GL_DEPTH_TEST); }
|
||||||
|
|
||||||
|
|
@ -1588,11 +1634,9 @@ void rlDisableWireMode(void)
|
||||||
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the line drawing width
|
// Set the line drawing width
|
||||||
void rlSetLineWidth(float width)
|
void rlSetLineWidth(float width) { glLineWidth(width); }
|
||||||
{
|
|
||||||
glLineWidth(width);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get the line drawing width
|
// Get the line drawing width
|
||||||
float rlGetLineWidth(void)
|
float rlGetLineWidth(void)
|
||||||
|
|
@ -3179,6 +3223,7 @@ unsigned int rlLoadVertexBufferElement(void *buffer, int size, bool dynamic)
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enable vertex buffer (VBO)
|
||||||
void rlEnableVertexBuffer(unsigned int id)
|
void rlEnableVertexBuffer(unsigned int id)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3186,6 +3231,7 @@ void rlEnableVertexBuffer(unsigned int id)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable vertex buffer (VBO)
|
||||||
void rlDisableVertexBuffer(void)
|
void rlDisableVertexBuffer(void)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3193,6 +3239,7 @@ void rlDisableVertexBuffer(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enable vertex buffer element (VBO element)
|
||||||
void rlEnableVertexBufferElement(unsigned int id)
|
void rlEnableVertexBufferElement(unsigned int id)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3200,6 +3247,7 @@ void rlEnableVertexBufferElement(unsigned int id)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable vertex buffer element (VBO element)
|
||||||
void rlDisableVertexBufferElement(void)
|
void rlDisableVertexBufferElement(void)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3207,16 +3255,27 @@ void rlDisableVertexBufferElement(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update GPU buffer with new data
|
// Update vertex buffer with new data
|
||||||
// NOTE: dataSize and offset must be provided in bytes
|
// NOTE: dataSize and offset must be provided in bytes
|
||||||
void rlUpdateVertexBuffer(unsigned int bufferId, void *data, int dataSize, int offset)
|
void rlUpdateVertexBuffer(unsigned int id, void *data, int dataSize, int offset)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, bufferId);
|
glBindBuffer(GL_ARRAY_BUFFER, id);
|
||||||
glBufferSubData(GL_ARRAY_BUFFER, offset, dataSize, data);
|
glBufferSubData(GL_ARRAY_BUFFER, offset, dataSize, data);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update vertex buffer elements with new data
|
||||||
|
// NOTE: dataSize and offset must be provided in bytes
|
||||||
|
void rlUpdateVertexBufferElements(unsigned int id, void *data, int dataSize, int offset)
|
||||||
|
{
|
||||||
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, id);
|
||||||
|
glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, offset, dataSize, data);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// Enable vertex array object (VAO)
|
||||||
bool rlEnableVertexArray(unsigned int vaoId)
|
bool rlEnableVertexArray(unsigned int vaoId)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
@ -3230,6 +3289,7 @@ bool rlEnableVertexArray(unsigned int vaoId)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable vertex array object (VAO)
|
||||||
void rlDisableVertexArray(void)
|
void rlDisableVertexArray(void)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3237,6 +3297,7 @@ void rlDisableVertexArray(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Enable vertex attribute index
|
||||||
void rlEnableVertexAttribute(unsigned int index)
|
void rlEnableVertexAttribute(unsigned int index)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3244,6 +3305,7 @@ void rlEnableVertexAttribute(unsigned int index)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable vertex attribute index
|
||||||
void rlDisableVertexAttribute(unsigned int index)
|
void rlDisableVertexAttribute(unsigned int index)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3251,16 +3313,19 @@ void rlDisableVertexAttribute(unsigned int index)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw vertex array
|
||||||
void rlDrawVertexArray(int offset, int count)
|
void rlDrawVertexArray(int offset, int count)
|
||||||
{
|
{
|
||||||
glDrawArrays(GL_TRIANGLES, offset, count);
|
glDrawArrays(GL_TRIANGLES, offset, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw vertex array elements
|
||||||
void rlDrawVertexArrayElements(int offset, int count, void *buffer)
|
void rlDrawVertexArrayElements(int offset, int count, void *buffer)
|
||||||
{
|
{
|
||||||
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (unsigned short *)buffer + offset);
|
glDrawElements(GL_TRIANGLES, count, GL_UNSIGNED_SHORT, (unsigned short *)buffer + offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw vertex array instanced
|
||||||
void rlDrawVertexArrayInstanced(int offset, int count, int instances)
|
void rlDrawVertexArrayInstanced(int offset, int count, int instances)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3268,6 +3333,7 @@ void rlDrawVertexArrayInstanced(int offset, int count, int instances)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Draw vertex array elements instanced
|
||||||
void rlDrawVertexArrayElementsInstanced(int offset, int count, void *buffer, int instances)
|
void rlDrawVertexArrayElementsInstanced(int offset, int count, void *buffer, int instances)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3276,6 +3342,7 @@ void rlDrawVertexArrayElementsInstanced(int offset, int count, void *buffer, int
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(GRAPHICS_API_OPENGL_11)
|
#if defined(GRAPHICS_API_OPENGL_11)
|
||||||
|
// Enable vertex state pointer
|
||||||
void rlEnableStatePointer(int vertexAttribType, void *buffer)
|
void rlEnableStatePointer(int vertexAttribType, void *buffer)
|
||||||
{
|
{
|
||||||
if (buffer != NULL) glEnableClientState(vertexAttribType);
|
if (buffer != NULL) glEnableClientState(vertexAttribType);
|
||||||
|
|
@ -3290,12 +3357,14 @@ void rlEnableStatePointer(int vertexAttribType, void *buffer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable vertex state pointer
|
||||||
void rlDisableStatePointer(int vertexAttribType)
|
void rlDisableStatePointer(int vertexAttribType)
|
||||||
{
|
{
|
||||||
glDisableClientState(vertexAttribType);
|
glDisableClientState(vertexAttribType);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Load vertex array object (VAO)
|
||||||
unsigned int rlLoadVertexArray(void)
|
unsigned int rlLoadVertexArray(void)
|
||||||
{
|
{
|
||||||
unsigned int vaoId = 0;
|
unsigned int vaoId = 0;
|
||||||
|
|
@ -3308,6 +3377,7 @@ unsigned int rlLoadVertexArray(void)
|
||||||
return vaoId;
|
return vaoId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set vertex attribute
|
||||||
void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, void *pointer)
|
void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool normalized, int stride, void *pointer)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3315,6 +3385,7 @@ void rlSetVertexAttribute(unsigned int index, int compSize, int type, bool norma
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set vertex attribute divisor
|
||||||
void rlSetVertexAttributeDivisor(unsigned int index, int divisor)
|
void rlSetVertexAttributeDivisor(unsigned int index, int divisor)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3322,6 +3393,7 @@ void rlSetVertexAttributeDivisor(unsigned int index, int divisor)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unload vertex array object (VAO)
|
||||||
void rlUnloadVertexArray(unsigned int vaoId)
|
void rlUnloadVertexArray(unsigned int vaoId)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
@ -3334,6 +3406,7 @@ void rlUnloadVertexArray(unsigned int vaoId)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Unload vertex buffer (VBO)
|
||||||
void rlUnloadVertexBuffer(unsigned int vboId)
|
void rlUnloadVertexBuffer(unsigned int vboId)
|
||||||
{
|
{
|
||||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user