This commit is contained in:
Benau 2018-08-31 17:40:26 +08:00
parent 2199679ac2
commit 15853c4e32
6 changed files with 38 additions and 16 deletions

View File

@ -700,5 +700,14 @@ void GL32_draw2DRectangle(video::SColor color, const core::rect<s32>& position,
glGetError();
} // GL32_draw2DRectangle
void preloadShaders()
{
Primitive2DList::getInstance();
UniformColoredTextureRectShader::getInstance();
TextureRectShader::getInstance();
ColoredRectShader::getInstance();
ColoredTextureRectShader::getInstance();
} // preloadShaders
#endif // !SERVER_ONLY

View File

@ -28,6 +28,8 @@
#include <SColor.h>
#include <SVertexIndex.h>
void preloadShaders();
void draw2DImageFromRTT(GLuint texture, size_t texture_w, size_t texture_h,
const irr::core::rect<irr::s32>& destRect,
const irr::core::rect<irr::s32>& sourceRect,

View File

@ -134,6 +134,25 @@ CPUParticleManager::GLParticle::GLParticle(bool flips)
glBindVertexArray(0);
} // GLParticle
// ----------------------------------------------------------------------------
CPUParticleManager::CPUParticleManager()
{
const float vertices[] =
{
-0.5f, 0.5f, 0.0f, 0.0f,
0.5f, 0.5f, 1.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 1.0f,
0.5f, -0.5f, 1.0f, 1.0f,
};
glGenBuffers(1, &m_particle_quad);
glBindBuffer(GL_ARRAY_BUFFER, m_particle_quad);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
// For preloading shaders
ParticleRenderer::getInstance();
AlphaTestParticleRenderer::getInstance();
} // CPUParticleManager
// ----------------------------------------------------------------------------
void CPUParticleManager::addBillboardNode(scene::IBillboardSceneNode* node)
{

View File

@ -116,21 +116,7 @@ private:
public:
// ------------------------------------------------------------------------
CPUParticleManager()
{
const float vertices[] =
{
-0.5f, 0.5f, 0.0f, 0.0f,
0.5f, 0.5f, 1.0f, 0.0f,
-0.5f, -0.5f, 0.0f, 1.0f,
0.5f, -0.5f, 1.0f, 1.0f,
};
glGenBuffers(1, &m_particle_quad);
glBindBuffer(GL_ARRAY_BUFFER, m_particle_quad);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,
GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
CPUParticleManager();
// ------------------------------------------------------------------------
~CPUParticleManager()
{

View File

@ -638,8 +638,11 @@ void IrrDriver::initDevice()
#endif
#ifndef SERVER_ONLY
if(CVS->isGLSL())
if (CVS->isGLSL())
{
m_renderer = new ShaderBasedRenderer();
preloadShaders();
}
else
m_renderer = new FixedPipelineRenderer();
#endif

View File

@ -758,6 +758,9 @@ PostProcessing::PostProcessing()
STKTexManager::getInstance()->addTexture(m_areamap);
areamap->drop();
// For preloading shaders
MotionBlurShader::getInstance();
LightningShader::getInstance();
} // PostProcessing
// ----------------------------------------------------------------------------