- fixed: The interpolation factor for models was never passed to the shader.

This commit is contained in:
Christoph Oelckers 2014-10-23 09:57:27 +02:00
parent 5302a10a7d
commit 618c23303f
5 changed files with 9 additions and 5 deletions

View file

@ -204,7 +204,7 @@ public:
FModelVertexBuffer();
~FModelVertexBuffer();
unsigned int SetupFrame(unsigned int frame1, unsigned int frame2, float factor);
unsigned int SetupFrame(unsigned int frame1, unsigned int frame2);
};
#define VMO ((FModelVertex*)NULL)

View file

@ -138,7 +138,7 @@ FModelVertexBuffer::~FModelVertexBuffer()
//
//===========================================================================
unsigned int FModelVertexBuffer::SetupFrame(unsigned int frame1, unsigned int frame2, float factor)
unsigned int FModelVertexBuffer::SetupFrame(unsigned int frame1, unsigned int frame2)
{
glBindBuffer(GL_ARRAY_BUFFER, vbo_id);
glVertexAttribPointer(VATTR_VERTEX, 3, GL_FLOAT, false, sizeof(FModelVertex), &VMO[frame1].x);

View file

@ -304,10 +304,12 @@ void FDMDModel::RenderFrame(FTexture * skin, int frameno, int frameno2, double i
FMaterial * tex = FMaterial::ValidateTexture(skin, false);
gl_RenderState.SetMaterial(tex, CLAMP_NONE, translation, -1, false);
gl_RenderState.SetInterpolationFactor((float)inter);
gl_RenderState.Apply();
GLRenderer->mModelVBO->SetupFrame(frames[frameno].vindex, frames[frameno2].vindex, inter);
GLRenderer->mModelVBO->SetupFrame(frames[frameno].vindex, frames[frameno2].vindex);
glDrawArrays(GL_TRIANGLES, 0, lodInfo[0].numTriangles * 3);
gl_RenderState.SetInterpolationFactor(0.f);
}

View file

@ -251,6 +251,7 @@ void FMD3Model::RenderFrame(FTexture * skin, int frameno, int frameno2, double i
{
if (frameno>=numFrames || frameno2>=numFrames) return;
gl_RenderState.SetInterpolationFactor((float)inter);
for(int i=0;i<numSurfaces;i++)
{
MD3Surface * surf = &surfaces[i];
@ -270,9 +271,10 @@ void FMD3Model::RenderFrame(FTexture * skin, int frameno, int frameno2, double i
gl_RenderState.SetMaterial(tex, CLAMP_NONE, translation, -1, false);
gl_RenderState.Apply();
GLRenderer->mModelVBO->SetupFrame(surf->vindex + frameno * surf->numVertices, surf->vindex + frameno2 * surf->numVertices, inter);
GLRenderer->mModelVBO->SetupFrame(surf->vindex + frameno * surf->numVertices, surf->vindex + frameno2 * surf->numVertices);
glDrawElements(GL_TRIANGLES, surf->numTriangles * 3, GL_UNSIGNED_INT, (void*)(intptr_t)(surf->iindex * sizeof(unsigned int)));
}
gl_RenderState.SetInterpolationFactor(0.f);
}
FMD3Model::~FMD3Model()

View file

@ -420,7 +420,7 @@ void FVoxelModel::RenderFrame(FTexture * skin, int frame, int frame2, double int
gl_RenderState.SetMaterial(tex, CLAMP_NOFILTER, translation, -1, false);
gl_RenderState.Apply();
GLRenderer->mModelVBO->SetupFrame(vindex, vindex, 0.f);
GLRenderer->mModelVBO->SetupFrame(vindex, vindex);
glDrawElements(GL_TRIANGLES, mIndices.Size(), GL_UNSIGNED_INT, (void*)(intptr_t)(iindex * sizeof(unsigned int)));
}