aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/shaders_custom_uniform.c2
-rw-r--r--examples/shaders_postprocessing.c2
-rw-r--r--src/rlgl.c10
-rw-r--r--src/textures.c4
4 files changed, 13 insertions, 5 deletions
diff --git a/examples/shaders_custom_uniform.c b/examples/shaders_custom_uniform.c
index ceaa86df..32dd7ff1 100644
--- a/examples/shaders_custom_uniform.c
+++ b/examples/shaders_custom_uniform.c
@@ -94,7 +94,7 @@ int main()
SetCustomShader(shader);
// NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom)
- DrawTextureRec(target.texture, (Rectangle){ 0, target.texture.height, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE);
+ DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE);
SetDefaultShader();
DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, GRAY);
diff --git a/examples/shaders_postprocessing.c b/examples/shaders_postprocessing.c
index 632a6371..e9fafe15 100644
--- a/examples/shaders_postprocessing.c
+++ b/examples/shaders_postprocessing.c
@@ -82,7 +82,7 @@ int main()
SetCustomShader(shader);
// NOTE: Render texture must be y-flipped due to default OpenGL coordinates (left-bottom)
- DrawTextureRec(target.texture, (Rectangle){ 0, target.texture.height, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE);
+ DrawTextureRec(target.texture, (Rectangle){ 0, 0, target.texture.width, -target.texture.height }, (Vector2){ 0, 0 }, WHITE);
SetDefaultShader();
DrawText("(c) Dwarf 3D model by David Moreno", screenWidth - 200, screenHeight - 20, 10, DARKGRAY);
diff --git a/src/rlgl.c b/src/rlgl.c
index b2a36351..f0acf124 100644
--- a/src/rlgl.c
+++ b/src/rlgl.c
@@ -1897,6 +1897,9 @@ Model rlglLoadModel(Mesh mesh)
// Create buffers for our vertex data (positions, texcoords, normals)
glGenBuffers(3, vertexBuffer);
+
+ // NOTE: Default shader is assigned to model, so vbo buffers are properly linked to vertex attribs
+ // If model shader is changed, vbo buffers must be re-assigned to new location points (previously loaded)
// Enable vertex attributes: position
glBindBuffer(GL_ARRAY_BUFFER, vertexBuffer[0]);
@@ -2489,13 +2492,14 @@ static Shader LoadDefaultShader(void)
}
// Get location handlers to for shader attributes and uniforms
+// NOTE: If any location is not found, loc point becomes -1
static void LoadDefaultShaderLocations(Shader *shader)
{
// Get handles to GLSL input attibute locations
shader->vertexLoc = glGetAttribLocation(shader->id, "vertexPosition");
shader->texcoordLoc = glGetAttribLocation(shader->id, "vertexTexCoord");
shader->normalLoc = glGetAttribLocation(shader->id, "vertexNormal");
- shader->colorLoc = glGetAttribLocation(shader->id, "vertexColor"); // -1 if not found
+ shader->colorLoc = glGetAttribLocation(shader->id, "vertexColor");
// Get handles to GLSL uniform locations (vertex shader)
shader->mvpLoc = glGetUniformLocation(shader->id, "mvpMatrix");
@@ -2503,8 +2507,8 @@ static void LoadDefaultShaderLocations(Shader *shader)
// Get handles to GLSL uniform locations (fragment shader)
shader->tintColorLoc = glGetUniformLocation(shader->id, "fragTintColor");
shader->mapDiffuseLoc = glGetUniformLocation(shader->id, "texture0");
- shader->mapNormalLoc = glGetUniformLocation(shader->id, "texture1"); // -1 if not found
- shader->mapSpecularLoc = glGetUniformLocation(shader->id, "texture2"); // -1 if not found
+ shader->mapNormalLoc = glGetUniformLocation(shader->id, "texture1");
+ shader->mapSpecularLoc = glGetUniformLocation(shader->id, "texture2");
}
// Read text file
diff --git a/src/textures.c b/src/textures.c
index 67264afb..79047ab7 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -1385,6 +1385,10 @@ void DrawTextureEx(Texture2D texture, Vector2 position, float rotation, float sc
void DrawTextureRec(Texture2D texture, Rectangle sourceRec, Vector2 position, Color tint)
{
Rectangle destRec = { (int)position.x, (int)position.y, abs(sourceRec.width), abs(sourceRec.height) };
+
+ if (sourceRec.width < 0) sourceRec.x -= sourceRec.width;
+ if (sourceRec.height < 0) sourceRec.y -= sourceRec.height;
+
Vector2 origin = { 0, 0 };
DrawTexturePro(texture, sourceRec, destRec, origin, 0.0f, tint);