[rlgl] Preserve texture on mode switching (#4364)
* Fix textures on draw mode switch * formatting fix * ident
This commit is contained in:
parent
e1ec595251
commit
27af359d1c
2 changed files with 4 additions and 6 deletions
|
@ -117,8 +117,7 @@ void DrawTexturePoly(Texture2D texture, Vector2 center, Vector2 *points, Vector2
|
||||||
{
|
{
|
||||||
rlSetTexture(texture.id);
|
rlSetTexture(texture.id);
|
||||||
|
|
||||||
// Texturing is only supported on RL_QUADS
|
rlBegin(RL_TRIANGLES);
|
||||||
rlBegin(RL_QUADS);
|
|
||||||
|
|
||||||
rlColor4ub(tint.r, tint.g, tint.b, tint.a);
|
rlColor4ub(tint.r, tint.g, tint.b, tint.a);
|
||||||
|
|
||||||
|
@ -132,9 +131,6 @@ void DrawTexturePoly(Texture2D texture, Vector2 center, Vector2 *points, Vector2
|
||||||
|
|
||||||
rlTexCoord2f(texcoords[i + 1].x, texcoords[i + 1].y);
|
rlTexCoord2f(texcoords[i + 1].x, texcoords[i + 1].y);
|
||||||
rlVertex2f(points[i + 1].x + center.x, points[i + 1].y + center.y);
|
rlVertex2f(points[i + 1].x + center.x, points[i + 1].y + center.y);
|
||||||
|
|
||||||
rlTexCoord2f(texcoords[i + 1].x, texcoords[i + 1].y);
|
|
||||||
rlVertex2f(points[i + 1].x + center.x, points[i + 1].y + center.y);
|
|
||||||
}
|
}
|
||||||
rlEnd();
|
rlEnd();
|
||||||
|
|
||||||
|
|
|
@ -1459,6 +1459,7 @@ void rlBegin(int mode)
|
||||||
// NOTE: In all three cases, vertex are accumulated over default internal vertex buffer
|
// NOTE: In all three cases, vertex are accumulated over default internal vertex buffer
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode != mode)
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode != mode)
|
||||||
{
|
{
|
||||||
|
int currentTexture = RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId;
|
||||||
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount > 0)
|
if (RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount > 0)
|
||||||
{
|
{
|
||||||
// Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4,
|
// Make sure current RLGL.currentBatch->draws[i].vertexCount is aligned a multiple of 4,
|
||||||
|
@ -1481,13 +1482,14 @@ void rlBegin(int mode)
|
||||||
|
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode = mode;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].mode = mode;
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount = 0;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].vertexCount = 0;
|
||||||
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = RLGL.State.defaultTextureId;
|
RLGL.currentBatch->draws[RLGL.currentBatch->drawCounter - 1].textureId = currentTexture;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finish vertex providing
|
// Finish vertex providing
|
||||||
void rlEnd(void)
|
void rlEnd(void)
|
||||||
{
|
{
|
||||||
|
rlSetTexture(RLGL.State.defaultTextureId);
|
||||||
// NOTE: Depth increment is dependant on rlOrtho(): z-near and z-far values,
|
// NOTE: Depth increment is dependant on rlOrtho(): z-near and z-far values,
|
||||||
// as well as depth buffer bit-depth (16bit or 24bit or 32bit)
|
// as well as depth buffer bit-depth (16bit or 24bit or 32bit)
|
||||||
// Correct increment formula would be: depthInc = (zfar - znear)/pow(2, bits)
|
// Correct increment formula would be: depthInc = (zfar - znear)/pow(2, bits)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue