Update textures.c
Added support form vertical and horizontal 3-patches. Corrected the distortion caused when destRec size is smaller than 4x4. Now even 1x10 or 0x0 sizes are drawn correctly.
This commit is contained in:
parent
6ef03ea4e8
commit
28424141f0
377
src/textures.c
377
src/textures.c
@ -2330,73 +2330,80 @@ void DrawTexturePro(Texture2D texture, Rectangle sourceRec, Rectangle destRec, V
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DrawNinePatch(NinePatch ninePatch, Rectangle destRec, bool usePadding, Vector2 origin, float rotation, Color tint)
|
|
||||||
|
void DrawNPatch(NPatch nPatch, Rectangle destRec, bool usePadding, Vector2 origin, float rotation, Color tint)
|
||||||
{
|
{
|
||||||
// Check if n-patch texture is valid
|
// Check if n-patch texture is valid
|
||||||
if (ninePatch.texture.id > 0)
|
if (nPatch.texture.id > 0)
|
||||||
{
|
{
|
||||||
float width = (float)ninePatch.texture.width;
|
float width = (float)nPatch.texture.width;
|
||||||
float height = (float)ninePatch.texture.height;
|
float height = (float)nPatch.texture.height;
|
||||||
|
|
||||||
float contentsWidth = (destRec.width >= ninePatch.minSize.x)? destRec.width : ninePatch.minSize.x;
|
float patchWidth = (destRec.width >= nPatch.minSize.x)? destRec.width : nPatch.minSize.x;
|
||||||
float contentsHeight = (destRec.height >= ninePatch.minSize.y)? destRec.height : ninePatch.minSize.y;
|
float patchHeight = (destRec.height >= nPatch.minSize.y)? destRec.height : nPatch.minSize.y;
|
||||||
|
|
||||||
if (usePadding)
|
if (usePadding)
|
||||||
{
|
{
|
||||||
contentsWidth += (float)(ninePatch.padding[0] + ninePatch.padding[2]);
|
patchWidth += (float)(nPatch.padding[0] + nPatch.padding[2]);
|
||||||
contentsHeight += (float)(ninePatch.padding[1] + ninePatch.padding[3]);
|
patchHeight += (float)(nPatch.padding[1] + nPatch.padding[3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ninePatch.sourceRec.width < 0) ninePatch.sourceRec.x -= ninePatch.sourceRec.width;
|
|
||||||
if (ninePatch.sourceRec.height < 0) ninePatch.sourceRec.y -= ninePatch.sourceRec.height;
|
|
||||||
|
|
||||||
rlEnableTexture(ninePatch.texture.id);
|
if (nPatch.sourceRec.width < 0) nPatch.sourceRec.x -= nPatch.sourceRec.width;
|
||||||
|
if (nPatch.sourceRec.height < 0) nPatch.sourceRec.y -= nPatch.sourceRec.height;
|
||||||
|
|
||||||
|
// Ignore the destRec width if the n-patch type is NPT_3PATCH_VERTICAL
|
||||||
|
if (nPatch.type == NPT_3PATCH_VERTICAL) { patchWidth = nPatch.sourceRec.width; }
|
||||||
|
|
||||||
|
// Ignore the destRec height if the n-patch type is NPT_3PATCH_HORIZONTAL
|
||||||
|
if (nPatch.type == NPT_3PATCH_HORIZONTAL) { patchHeight = nPatch.sourceRec.height; }
|
||||||
|
|
||||||
bool drawCenter = true;
|
bool drawCenter = true;
|
||||||
bool drawMiddle = true;
|
bool drawMiddle = true;
|
||||||
|
|
||||||
float borderWidth[4]; // copy the ninePatch.borderWidth[4] values so they can be adjusted
|
float borderWidth[4]; // copy the nPatch.borderWidth[4] values so they can be adjusted
|
||||||
for (int i = 0; i < 4; i++) { borderWidth[i] = ninePatch.borderWidth[i]; }
|
for (int i = 0; i < 4; i++) { borderWidth[i] = nPatch.borderWidth[i]; }
|
||||||
|
|
||||||
// adjust the lateral (left and right) border widths in case contentsWidth < ninePatch.texture.width
|
// adjust the lateral (left and right) border widths in case patchWidth < nPatch.texture.width
|
||||||
if (contentsWidth <= ninePatch.borderWidth[0] + ninePatch.borderWidth[2])
|
if (patchWidth <= nPatch.borderWidth[0] + nPatch.borderWidth[2])
|
||||||
{
|
{
|
||||||
drawCenter = false;
|
drawCenter = false;
|
||||||
borderWidth[0] = (borderWidth[0] / (ninePatch.borderWidth[0] + ninePatch.borderWidth[2])) * (borderWidth[0] + borderWidth[2]);
|
borderWidth[0] = (borderWidth[0] / (nPatch.borderWidth[0] + nPatch.borderWidth[2])) * patchWidth;
|
||||||
borderWidth[2] = contentsWidth - borderWidth[0];
|
borderWidth[2] = patchWidth - borderWidth[0];
|
||||||
}
|
}
|
||||||
// adjust the lateral (top and bottom) border heights in case contentsHeight < ninePatch.texture.height
|
// adjust the lateral (top and bottom) border heights in case patchHeight < nPatch.texture.height
|
||||||
if (contentsHeight <= ninePatch.borderWidth[1] + ninePatch.borderWidth[3])
|
if (patchHeight <= nPatch.borderWidth[1] + nPatch.borderWidth[3])
|
||||||
{
|
{
|
||||||
drawMiddle = false;
|
drawMiddle = false;
|
||||||
borderWidth[1] = (borderWidth[1] / (ninePatch.borderWidth[1] + ninePatch.borderWidth[3])) * (borderWidth[1] + borderWidth[3]);
|
borderWidth[1] = (borderWidth[1] / (nPatch.borderWidth[1] + nPatch.borderWidth[3])) * patchHeight;
|
||||||
borderWidth[3] = contentsHeight - borderWidth[1];
|
borderWidth[3] = patchHeight - borderWidth[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 vertA, vertB, vertC, vertD;
|
Vector2 vertA, vertB, vertC, vertD;
|
||||||
vertA.x = 0.0f;
|
vertA.x = 0.0f; // outer left
|
||||||
vertA.y = 0.0f;
|
vertA.y = 0.0f; // outer top
|
||||||
vertB.x = borderWidth[0];
|
vertB.x = borderWidth[0]; // inner left
|
||||||
vertB.y = borderWidth[1];
|
vertB.y = borderWidth[1]; // inner top
|
||||||
vertC.x = contentsWidth - borderWidth[2];
|
vertC.x = patchWidth - borderWidth[2]; // inner right
|
||||||
vertC.y = contentsHeight - borderWidth[3];
|
vertC.y = patchHeight - borderWidth[3]; // inner bottom
|
||||||
vertD.x = contentsWidth;
|
vertD.x = patchWidth; // outer right
|
||||||
vertD.y = contentsHeight;
|
vertD.y = patchHeight; // outer bottom
|
||||||
|
|
||||||
Vector2 coordA, coordB, coordC, coordD;
|
Vector2 coordA, coordB, coordC, coordD;
|
||||||
coordA.x = ninePatch.sourceRec.x / width;
|
coordA.x = nPatch.sourceRec.x / width;
|
||||||
coordA.y = ninePatch.sourceRec.y / height;
|
coordA.y = nPatch.sourceRec.y / height;
|
||||||
coordB.x = (ninePatch.sourceRec.x + borderWidth[0]) / width;
|
coordB.x = (nPatch.sourceRec.x + borderWidth[0]) / width;
|
||||||
coordB.y = (ninePatch.sourceRec.y + borderWidth[1]) / height;
|
coordB.y = (nPatch.sourceRec.y + borderWidth[1]) / height;
|
||||||
coordC.x = (ninePatch.sourceRec.x + ninePatch.sourceRec.width - borderWidth[2]) / width;
|
coordC.x = (nPatch.sourceRec.x + nPatch.sourceRec.width - borderWidth[2]) / width;
|
||||||
coordC.y = (ninePatch.sourceRec.y + ninePatch.sourceRec.height - borderWidth[3]) / height;
|
coordC.y = (nPatch.sourceRec.y + nPatch.sourceRec.height - borderWidth[3]) / height;
|
||||||
coordD.x = (ninePatch.sourceRec.x + ninePatch.sourceRec.width) / width;
|
coordD.x = (nPatch.sourceRec.x + nPatch.sourceRec.width) / width;
|
||||||
coordD.y = (ninePatch.sourceRec.y + ninePatch.sourceRec.height) / height;
|
coordD.y = (nPatch.sourceRec.y + nPatch.sourceRec.height) / height;
|
||||||
|
|
||||||
|
rlEnableTexture(nPatch.texture.id);
|
||||||
|
|
||||||
rlPushMatrix();
|
rlPushMatrix();
|
||||||
if (usePadding)
|
if (usePadding)
|
||||||
{
|
{
|
||||||
rlTranslatef(destRec.x - (float)ninePatch.padding[0], destRec.y - (float)ninePatch.padding[2], 0);
|
rlTranslatef(destRec.x - (float)nPatch.padding[0], destRec.y - (float)nPatch.padding[2], 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2409,139 +2416,231 @@ void DrawNinePatch(NinePatch ninePatch, Rectangle destRec, bool usePadding, Vect
|
|||||||
rlColor4ub(tint.r, tint.g, tint.b, tint.a);
|
rlColor4ub(tint.r, tint.g, tint.b, tint.a);
|
||||||
rlNormal3f(0.0f, 0.0f, 1.0f); // Normal vector pointing towards viewer
|
rlNormal3f(0.0f, 0.0f, 1.0f); // Normal vector pointing towards viewer
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
if (nPatch.type == NPT_3PATCH_HORIZONTAL)
|
||||||
// TOP-LEFT QUAD
|
|
||||||
// Bottom-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordA.x, coordB.y); rlVertex2f(vertA.x, vertB.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordA.y); rlVertex2f(vertB.x, vertA.y);
|
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordA.x, coordA.y); rlVertex2f(vertA.x, vertA.y);
|
|
||||||
|
|
||||||
if (drawCenter)
|
|
||||||
{
|
|
||||||
// TOP-CENTER QUAD
|
|
||||||
// Bottom-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordC.x, coordA.y); rlVertex2f(vertC.x, vertA.y);
|
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordA.y); rlVertex2f(vertB.x, vertA.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TOP-RIGHT QUAD
|
|
||||||
// Bottom-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordD.x, coordB.y); rlVertex2f(vertD.x, vertB.y);
|
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordD.x, coordA.y); rlVertex2f(vertD.x, vertA.y);
|
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordC.x, coordA.y); rlVertex2f(vertC.x, vertA.y);
|
|
||||||
|
|
||||||
|
|
||||||
if (drawMiddle)
|
|
||||||
{
|
{
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
// MIDDLE-LEFT QUAD
|
// LEFT QUAD
|
||||||
// Bottom-left corner for texture and quad
|
// Bottom-left corner for texture and quad
|
||||||
rlTexCoord2f(coordA.x, coordC.y); rlVertex2f(vertA.x, vertC.y);
|
rlTexCoord2f(coordA.x, coordD.y); rlVertex2f(vertA.x, vertD.y);
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
// Bottom-right corner for texture and quad
|
||||||
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
rlTexCoord2f(coordB.x, coordD.y); rlVertex2f(vertB.x, vertD.y);
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
// Top-right corner for texture and quad
|
||||||
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
rlTexCoord2f(coordB.x, coordA.y); rlVertex2f(vertB.x, vertA.y);
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
// Top-left corner for texture and quad
|
||||||
rlTexCoord2f(coordA.x, coordB.y); rlVertex2f(vertA.x, vertB.y);
|
rlTexCoord2f(coordA.x, coordA.y); rlVertex2f(vertA.x, vertA.y);
|
||||||
|
|
||||||
if (drawCenter)
|
if (drawCenter)
|
||||||
{
|
{
|
||||||
// MIDDLE-CENTER QUAD
|
// CENTER QUAD
|
||||||
// Bottom-left corner for texture and quad
|
// Bottom-left corner for texture and quad
|
||||||
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
rlTexCoord2f(coordB.x, coordD.y); rlVertex2f(vertB.x, vertD.y);
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
// Bottom-right corner for texture and quad
|
||||||
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
rlTexCoord2f(coordC.x, coordD.y); rlVertex2f(vertC.x, vertD.y);
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
// Top-right corner for texture and quad
|
||||||
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
rlTexCoord2f(coordC.x, coordA.y); rlVertex2f(vertC.x, vertA.y);
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
// Top-left corner for texture and quad
|
||||||
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
rlTexCoord2f(coordB.x, coordA.y); rlVertex2f(vertB.x, vertA.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
// MIDDLE-RIGHT QUAD
|
// RIGHT QUAD
|
||||||
// Bottom-left corner for texture and quad
|
// Bottom-left corner for texture and quad
|
||||||
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordD.x, coordC.y); rlVertex2f(vertD.x, vertC.y);
|
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordD.x, coordB.y); rlVertex2f(vertD.x, vertB.y);
|
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
|
||||||
// BOTTOM-LEFT QUAD
|
|
||||||
// Bottom-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordA.x, coordD.y); rlVertex2f(vertA.x, vertD.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordD.y); rlVertex2f(vertB.x, vertD.y);
|
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordA.x, coordC.y); rlVertex2f(vertA.x, vertC.y);
|
|
||||||
|
|
||||||
if (drawCenter)
|
|
||||||
{
|
|
||||||
// BOTTOM-CENTER QUAD
|
|
||||||
// Bottom-left corner for texture and quad
|
|
||||||
rlTexCoord2f(coordB.x, coordD.y); rlVertex2f(vertB.x, vertD.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
|
||||||
rlTexCoord2f(coordC.x, coordD.y); rlVertex2f(vertC.x, vertD.y);
|
rlTexCoord2f(coordC.x, coordD.y); rlVertex2f(vertC.x, vertD.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordD.y); rlVertex2f(vertD.x, vertD.y);
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
// Top-right corner for texture and quad
|
||||||
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
rlTexCoord2f(coordD.x, coordA.y); rlVertex2f(vertD.x, vertA.y);
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
// Top-left corner for texture and quad
|
||||||
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
rlTexCoord2f(coordC.x, coordA.y); rlVertex2f(vertC.x, vertA.y);
|
||||||
}
|
}
|
||||||
|
else if (nPatch.type == NPT_3PATCH_VERTICAL)
|
||||||
|
{
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
// TOP QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordB.y); rlVertex2f(vertA.x, vertB.y);
|
||||||
|
|
||||||
// BOTTOM-RIGHT QUAD
|
// Bottom-right corner for texture and quad
|
||||||
// Bottom-left corner for texture and quad
|
rlTexCoord2f(coordD.x, coordB.y); rlVertex2f(vertD.x, vertB.y);
|
||||||
rlTexCoord2f(coordC.x, coordD.y); rlVertex2f(vertC.x, vertD.y);
|
|
||||||
|
|
||||||
// Bottom-right corner for texture and quad
|
// Top-right corner for texture and quad
|
||||||
rlTexCoord2f(coordD.x, coordD.y); rlVertex2f(vertD.x, vertD.y);
|
rlTexCoord2f(coordD.x, coordA.y); rlVertex2f(vertD.x, vertA.y);
|
||||||
|
|
||||||
// Top-right corner for texture and quad
|
// Top-left corner for texture and quad
|
||||||
rlTexCoord2f(coordD.x, coordC.y); rlVertex2f(vertD.x, vertC.y);
|
rlTexCoord2f(coordA.x, coordA.y); rlVertex2f(vertA.x, vertA.y);
|
||||||
|
|
||||||
// Top-left corner for texture and quad
|
if (drawCenter)
|
||||||
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
{
|
||||||
|
// MIDDLE QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordC.y); rlVertex2f(vertA.x, vertC.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordC.y); rlVertex2f(vertD.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordB.y); rlVertex2f(vertD.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordB.y); rlVertex2f(vertA.x, vertB.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// BOTTOM QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordD.y); rlVertex2f(vertA.x, vertD.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordD.y); rlVertex2f(vertD.x, vertD.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordC.y); rlVertex2f(vertD.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordC.y); rlVertex2f(vertA.x, vertC.y);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (nPatch.type == NPT_9PATCH)
|
||||||
|
{
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
// TOP-LEFT QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordB.y); rlVertex2f(vertA.x, vertB.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordA.y); rlVertex2f(vertB.x, vertA.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordA.y); rlVertex2f(vertA.x, vertA.y);
|
||||||
|
|
||||||
|
if (drawCenter)
|
||||||
|
{
|
||||||
|
// TOP-CENTER QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordA.y); rlVertex2f(vertC.x, vertA.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordA.y); rlVertex2f(vertB.x, vertA.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TOP-RIGHT QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordB.y); rlVertex2f(vertD.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordA.y); rlVertex2f(vertD.x, vertA.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordA.y); rlVertex2f(vertC.x, vertA.y);
|
||||||
|
|
||||||
|
if (drawMiddle)
|
||||||
|
{
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
// MIDDLE-LEFT QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordC.y); rlVertex2f(vertA.x, vertC.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordB.y); rlVertex2f(vertA.x, vertB.y);
|
||||||
|
|
||||||
|
if (drawCenter)
|
||||||
|
{
|
||||||
|
// MIDDLE-CENTER QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordB.y); rlVertex2f(vertB.x, vertB.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// MIDDLE-RIGHT QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordC.y); rlVertex2f(vertD.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordB.y); rlVertex2f(vertD.x, vertB.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordB.y); rlVertex2f(vertC.x, vertB.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
// BOTTOM-LEFT QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordD.y); rlVertex2f(vertA.x, vertD.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordD.y); rlVertex2f(vertB.x, vertD.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordA.x, coordC.y); rlVertex2f(vertA.x, vertC.y);
|
||||||
|
|
||||||
|
if (drawCenter)
|
||||||
|
{
|
||||||
|
// BOTTOM-CENTER QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordD.y); rlVertex2f(vertB.x, vertD.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordD.y); rlVertex2f(vertC.x, vertD.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordB.x, coordC.y); rlVertex2f(vertB.x, vertC.y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// BOTTOM-RIGHT QUAD
|
||||||
|
// Bottom-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordD.y); rlVertex2f(vertC.x, vertD.y);
|
||||||
|
|
||||||
|
// Bottom-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordD.y); rlVertex2f(vertD.x, vertD.y);
|
||||||
|
|
||||||
|
// Top-right corner for texture and quad
|
||||||
|
rlTexCoord2f(coordD.x, coordC.y); rlVertex2f(vertD.x, vertC.y);
|
||||||
|
|
||||||
|
// Top-left corner for texture and quad
|
||||||
|
rlTexCoord2f(coordC.x, coordC.y); rlVertex2f(vertC.x, vertC.y);
|
||||||
|
}
|
||||||
rlEnd();
|
rlEnd();
|
||||||
rlPopMatrix();
|
rlPopMatrix();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user