60 lines
1.7 KiB
C
60 lines
1.7 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "quad.h"
|
|
|
|
void quadBuffer(primitive_t *primitive, float z,
|
|
float x0, float y0, float u0, float v0,
|
|
float x1, float y1, float u1, float v1,
|
|
int32_t verticeStart, int32_t indiceStart
|
|
) {
|
|
vertice_t *vertices = malloc(sizeof(vertice_t) * QUAD_VERTICE_COUNT);
|
|
indice_t *indices = malloc(sizeof(indice_t) * QUAD_INDICE_COUNT);
|
|
|
|
vertices[0].x = x0, vertices[0].y = y0, vertices[0].z = z;
|
|
vertices[0].u = u0, vertices[0].v = v0;
|
|
|
|
vertices[1].x = x1, vertices[1].y = y0, vertices[1].z = z;
|
|
vertices[1].u = u1, vertices[1].v = v0;
|
|
|
|
vertices[2].x = x0, vertices[2].y = y1, vertices[2].z = z;
|
|
vertices[2].u = u0, vertices[2].v = v1;
|
|
|
|
vertices[3].x = x1, vertices[3].y = y1, vertices[3].z = z;
|
|
vertices[3].u = u1, vertices[3].v = v1;
|
|
|
|
indices[0] = (indice_t)(verticeStart + 0);
|
|
indices[1] = (indice_t)(verticeStart + 1);
|
|
indices[2] = (indice_t)(verticeStart + 2);
|
|
|
|
indices[3] = (indice_t)(verticeStart + 1);
|
|
indices[4] = (indice_t)(verticeStart + 2);
|
|
indices[5] = (indice_t)(verticeStart + 3);
|
|
|
|
primitiveBufferVertices(primitive,verticeStart,QUAD_VERTICE_COUNT,vertices);
|
|
primitiveBufferIndices( primitive,indiceStart, QUAD_INDICE_COUNT, indices );
|
|
|
|
free(vertices);
|
|
free(indices);
|
|
}
|
|
|
|
primitive_t * quadCreate(float z,
|
|
float x0, float y0, float u0, float v0,
|
|
float x1, float y1, float u1, float v1
|
|
) {
|
|
primitive_t *primitive = primitiveCreate(
|
|
QUAD_VERTICE_COUNT, QUAD_INDICE_COUNT
|
|
);
|
|
|
|
quadBuffer(primitive, z,
|
|
x0, y0, u0, v0,
|
|
x1, y1, u1, v1,
|
|
0, 0
|
|
);
|
|
|
|
return primitive;
|
|
} |