mirror of
https://github.com/AxioDL/PrimeWorldEditor.git
synced 2025-12-21 10:49:23 +00:00
Added PostLoad methods to ensure all models have created vertex buffers and all materials have generated shaders before the user gains control of the camera, to fix hitching issues
This commit is contained in:
@@ -75,6 +75,20 @@ void CModel::BufferGL()
|
||||
mBuffered = true;
|
||||
}
|
||||
|
||||
void CModel::GenerateMaterialShaders()
|
||||
{
|
||||
for (u32 iSet = 0; iSet < mMaterialSets.size(); iSet++)
|
||||
{
|
||||
CMaterialSet *pSet = mMaterialSets[iSet];
|
||||
|
||||
for (u32 iMat = 0; iMat < pSet->NumMaterials(); iMat++)
|
||||
{
|
||||
CMaterial *pMat = pSet->MaterialByIndex(iMat);
|
||||
pMat->GenerateShader(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CModel::ClearGLBuffer()
|
||||
{
|
||||
mVBO.Clear();
|
||||
|
||||
@@ -23,6 +23,7 @@ public:
|
||||
~CModel();
|
||||
|
||||
void BufferGL();
|
||||
void GenerateMaterialShaders();
|
||||
void ClearGLBuffer();
|
||||
void Draw(FRenderOptions Options, u32 MatSet);
|
||||
void DrawSurface(FRenderOptions Options, u32 Surface, u32 MatSet);
|
||||
|
||||
@@ -89,6 +89,12 @@ void CStaticModel::BufferGL()
|
||||
mBuffered = true;
|
||||
}
|
||||
|
||||
void CStaticModel::GenerateMaterialShaders()
|
||||
{
|
||||
if (mpMaterial)
|
||||
mpMaterial->GenerateShader(false);
|
||||
}
|
||||
|
||||
void CStaticModel::ClearGLBuffer()
|
||||
{
|
||||
mVBO.Clear();
|
||||
|
||||
@@ -22,6 +22,7 @@ public:
|
||||
void AddSurface(SSurface *pSurface);
|
||||
|
||||
void BufferGL();
|
||||
void GenerateMaterialShaders();
|
||||
void ClearGLBuffer();
|
||||
void Draw(FRenderOptions Options);
|
||||
void DrawSurface(FRenderOptions Options, u32 Surface);
|
||||
|
||||
Reference in New Issue
Block a user