Optionally allocate extra data for iqm blend frames.

Also, correct the blend parameter type (int->float. oops).
This commit is contained in:
Bill Currie 2012-05-17 15:57:07 +09:00
parent 02f8aa6b75
commit f958afad53
3 changed files with 5 additions and 4 deletions

View file

@ -165,7 +165,7 @@ maliasframedesc_t *R_AliasGetFramedesc (int framenum, aliashdr_t *hdr);
float R_AliasGetLerpedFrames (entity_t *ent, aliashdr_t *hdr); float R_AliasGetLerpedFrames (entity_t *ent, aliashdr_t *hdr);
float R_IQMGetLerpedFrames (entity_t *ent, iqm_t *hdr); float R_IQMGetLerpedFrames (entity_t *ent, iqm_t *hdr);
iqmframe_t *R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2, iqmframe_t *R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2,
int blend); float blend, int extra);
float R_EntityBlend (entity_t *ent, int pose, float interval); float R_EntityBlend (entity_t *ent, int pose, float interval);
void R_BeginEdgeFrame (void); void R_BeginEdgeFrame (void);
void R_ScanEdges (void); void R_ScanEdges (void);

View file

@ -217,7 +217,7 @@ glsl_R_DrawIQM (void)
Mat4Mult (iqm_vp, ent->transform, mvp_mat); Mat4Mult (iqm_vp, ent->transform, mvp_mat);
blend = R_IQMGetLerpedFrames (ent, iqm); blend = R_IQMGetLerpedFrames (ent, iqm);
frame = R_IQMBlendFrames (iqm, ent->pose1, ent->pose2, blend); frame = R_IQMBlendFrames (iqm, ent->pose1, ent->pose2, blend, 0);
qfeglUniform3fv (iqm_shader.ambient.location, 1, ambientcolor); qfeglUniform3fv (iqm_shader.ambient.location, 1, ambientcolor);
for (i = 0; i < MAX_IQM_LIGHTS; i++) { for (i = 0; i < MAX_IQM_LIGHTS; i++) {

View file

@ -67,12 +67,13 @@ R_IQMGetLerpedFrames (entity_t *ent, iqm_t *iqm)
} }
iqmframe_t * iqmframe_t *
R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2, int blend) R_IQMBlendFrames (const iqm_t *iqm, int frame1, int frame2, float blend,
int extra)
{ {
iqmframe_t *frame; iqmframe_t *frame;
int i; int i;
frame = Hunk_TempAlloc (iqm->num_joints * sizeof (iqmframe_t)); frame = Hunk_TempAlloc (iqm->num_joints * sizeof (iqmframe_t) + extra);
#if 0 #if 0
for (i = 0; i < iqm->num_joints; i++) { for (i = 0; i < iqm->num_joints; i++) {
iqmframe_t *f1 = &iqm->frames[frame1][i]; iqmframe_t *f1 = &iqm->frames[frame1][i];