mirror of https://github.com/bjornbytes/lovr.git
Move pose from Mesh to DrawCommand;
This commit is contained in:
parent
0a6de472ae
commit
a8361677f5
|
@ -424,9 +424,8 @@ void lovrGraphicsDraw(DrawCommand* draw) {
|
|||
lovrShaderSetMatrices(shader, "lovrNormalMatrices", normalMatrices, 0, 18);
|
||||
}
|
||||
|
||||
float* pose = lovrMeshGetPose(mesh);
|
||||
if (pose) {
|
||||
lovrShaderSetMatrices(shader, "lovrPose", pose, 0, MAX_BONES * 16);
|
||||
if (draw->pose) {
|
||||
lovrShaderSetMatrices(shader, "lovrPose", draw->pose, 0, MAX_BONES * 16);
|
||||
} else {
|
||||
lovrShaderSetMatrices(shader, "lovrPose", (float[16]) MAT4_IDENTITY, 0, 16);
|
||||
}
|
||||
|
|
|
@ -134,6 +134,7 @@ typedef struct {
|
|||
mat4 transform;
|
||||
bool forceMono;
|
||||
int instances;
|
||||
float* pose;
|
||||
} DrawCommand;
|
||||
|
||||
typedef struct {
|
||||
|
|
|
@ -35,8 +35,6 @@ void lovrMeshGetDrawRange(Mesh* mesh, uint32_t* start, uint32_t* count);
|
|||
void lovrMeshSetDrawRange(Mesh* mesh, uint32_t start, uint32_t count);
|
||||
Material* lovrMeshGetMaterial(Mesh* mesh);
|
||||
void lovrMeshSetMaterial(Mesh* mesh, Material* material);
|
||||
float* lovrMeshGetPose(Mesh* mesh);
|
||||
void lovrMeshSetPose(Mesh* mesh, float* pose);
|
||||
VertexPointer lovrMeshMapVertices(Mesh* mesh, uint32_t start, uint32_t count, bool read, bool write);
|
||||
void lovrMeshUnmapVertices(Mesh* mesh);
|
||||
IndexPointer lovrMeshReadIndices(Mesh* mesh, uint32_t* count, size_t* size);
|
||||
|
|
|
@ -39,12 +39,12 @@ static void renderNode(Model* model, int nodeIndex, int instances) {
|
|||
}
|
||||
|
||||
lovrMeshSetDrawRange(model->mesh, primitive->drawStart, primitive->drawCount);
|
||||
lovrMeshSetPose(model->mesh, (float*) model->pose);
|
||||
lovrGraphicsDraw(&(DrawCommand) {
|
||||
.transform = model->nodeTransforms[nodeIndex],
|
||||
.mesh = model->mesh,
|
||||
.material = lovrMeshGetMaterial(model->mesh),
|
||||
.instances = instances
|
||||
.instances = instances,
|
||||
.pose = (float*) model->pose
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -180,7 +180,6 @@ void lovrModelDraw(Model* model, mat4 transform, int instances) {
|
|||
lovrGraphicsMatrixTransform(transform);
|
||||
renderNode(model, 0, instances);
|
||||
lovrGraphicsPop();
|
||||
lovrMeshSetPose(model->mesh, NULL);
|
||||
}
|
||||
|
||||
Animator* lovrModelGetAnimator(Model* model) {
|
||||
|
|
|
@ -168,7 +168,6 @@ struct Mesh {
|
|||
GLuint vbo;
|
||||
GLuint ibo;
|
||||
Material* material;
|
||||
float* pose;
|
||||
map_attachment_t attachments;
|
||||
MeshAttachment layout[MAX_ATTACHMENTS];
|
||||
bool isAttachment;
|
||||
|
@ -2404,14 +2403,6 @@ void lovrMeshSetMaterial(Mesh* mesh, Material* material) {
|
|||
}
|
||||
}
|
||||
|
||||
float* lovrMeshGetPose(Mesh* mesh) {
|
||||
return mesh->pose;
|
||||
}
|
||||
|
||||
void lovrMeshSetPose(Mesh* mesh, float* pose) {
|
||||
mesh->pose = pose;
|
||||
}
|
||||
|
||||
VertexPointer lovrMeshMapVertices(Mesh* mesh, uint32_t start, uint32_t count, bool read, bool write) {
|
||||
if (write) {
|
||||
mesh->dirtyStart = MIN(mesh->dirtyStart, start);
|
||||
|
|
Loading…
Reference in New Issue