mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
Merge pull request #583 from Ragora/bugfix-opengl-errors-during-load
* [OpenGL] BugFix: Correct shader errors being thrown during load
This commit is contained in:
commit
c2d5df4c86
|
|
@ -933,7 +933,7 @@ void GFXGLDevice::setupGenericShaders( GenericShaderType type )
|
|||
}
|
||||
GFXShader* GFXGLDevice::createShader()
|
||||
{
|
||||
GFXGLShader* shader = new GFXGLShader();
|
||||
GFXGLShader* shader = new GFXGLShader(this);
|
||||
shader->registerResourceWithDevice( this );
|
||||
return shader;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -382,10 +382,11 @@ void GFXGLShaderConstBuffer::onShaderReload( GFXGLShader *shader )
|
|||
mWasLost = true;
|
||||
}
|
||||
|
||||
GFXGLShader::GFXGLShader() :
|
||||
GFXGLShader::GFXGLShader(GFXGLDevice* device) :
|
||||
mVertexShader(0),
|
||||
mPixelShader(0),
|
||||
mProgram(0),
|
||||
mDevice(device),
|
||||
mConstBufferSize(0),
|
||||
mConstBuffer(NULL)
|
||||
{
|
||||
|
|
@ -706,7 +707,8 @@ void GFXGLShader::initHandles()
|
|||
dMemset(mConstBuffer, 0, mConstBufferSize);
|
||||
|
||||
// Set our program so uniforms are assigned properly.
|
||||
glUseProgram(mProgram);
|
||||
mDevice->setShader(this, false);
|
||||
|
||||
// Iterate through uniforms to set sampler numbers.
|
||||
for (HandleMap::Iterator iter = mHandles.begin(); iter != mHandles.end(); ++iter)
|
||||
{
|
||||
|
|
@ -723,7 +725,6 @@ void GFXGLShader::initHandles()
|
|||
dMemcpy(mConstBuffer + handle->mOffset, &handle->mSamplerNum, handle->getSize());
|
||||
}
|
||||
}
|
||||
glUseProgram(0);
|
||||
|
||||
//instancing
|
||||
if (!mInstancingFormat)
|
||||
|
|
@ -830,6 +831,7 @@ void GFXGLShader::setConstantsFromBuffer(GFXGLShaderConstBuffer* buffer)
|
|||
|
||||
// Copy new value into our const buffer and set in GL.
|
||||
dMemcpy(mConstBuffer + handle->mOffset, buffer->mBuffer + handle->mOffset, handle->getSize());
|
||||
|
||||
switch(handle->mDesc.constType)
|
||||
{
|
||||
case GFXSCT_Float:
|
||||
|
|
|
|||
|
|
@ -32,14 +32,15 @@
|
|||
class GFXGLShaderConstHandle;
|
||||
class FileStream;
|
||||
class GFXGLShaderConstBuffer;
|
||||
class GFXGLDevice;
|
||||
|
||||
class GFXGLShader : public GFXShader
|
||||
{
|
||||
typedef Map<String, GFXGLShaderConstHandle*> HandleMap;
|
||||
public:
|
||||
GFXGLShader();
|
||||
GFXGLShader(GFXGLDevice* device);
|
||||
virtual ~GFXGLShader();
|
||||
|
||||
|
||||
/// @name GFXShader interface
|
||||
/// @{
|
||||
virtual GFXShaderConstHandle* getShaderConstHandle(const String& name);
|
||||
|
|
@ -99,6 +100,7 @@ protected:
|
|||
U32 mConstBufferSize;
|
||||
U8* mConstBuffer;
|
||||
HandleMap mHandles;
|
||||
GFXGLDevice* mDevice;
|
||||
Vector<GFXGLShaderConstHandle*> mValidHandles;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue