mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-04-29 00:05:40 +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
3 changed files with 10 additions and 6 deletions
|
|
@ -933,7 +933,7 @@ void GFXGLDevice::setupGenericShaders( GenericShaderType type )
|
||||||
}
|
}
|
||||||
GFXShader* GFXGLDevice::createShader()
|
GFXShader* GFXGLDevice::createShader()
|
||||||
{
|
{
|
||||||
GFXGLShader* shader = new GFXGLShader();
|
GFXGLShader* shader = new GFXGLShader(this);
|
||||||
shader->registerResourceWithDevice( this );
|
shader->registerResourceWithDevice( this );
|
||||||
return shader;
|
return shader;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -382,10 +382,11 @@ void GFXGLShaderConstBuffer::onShaderReload( GFXGLShader *shader )
|
||||||
mWasLost = true;
|
mWasLost = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
GFXGLShader::GFXGLShader() :
|
GFXGLShader::GFXGLShader(GFXGLDevice* device) :
|
||||||
mVertexShader(0),
|
mVertexShader(0),
|
||||||
mPixelShader(0),
|
mPixelShader(0),
|
||||||
mProgram(0),
|
mProgram(0),
|
||||||
|
mDevice(device),
|
||||||
mConstBufferSize(0),
|
mConstBufferSize(0),
|
||||||
mConstBuffer(NULL)
|
mConstBuffer(NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -706,7 +707,8 @@ void GFXGLShader::initHandles()
|
||||||
dMemset(mConstBuffer, 0, mConstBufferSize);
|
dMemset(mConstBuffer, 0, mConstBufferSize);
|
||||||
|
|
||||||
// Set our program so uniforms are assigned properly.
|
// Set our program so uniforms are assigned properly.
|
||||||
glUseProgram(mProgram);
|
mDevice->setShader(this, false);
|
||||||
|
|
||||||
// Iterate through uniforms to set sampler numbers.
|
// Iterate through uniforms to set sampler numbers.
|
||||||
for (HandleMap::Iterator iter = mHandles.begin(); iter != mHandles.end(); ++iter)
|
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());
|
dMemcpy(mConstBuffer + handle->mOffset, &handle->mSamplerNum, handle->getSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
glUseProgram(0);
|
|
||||||
|
|
||||||
//instancing
|
//instancing
|
||||||
if (!mInstancingFormat)
|
if (!mInstancingFormat)
|
||||||
|
|
@ -830,6 +831,7 @@ void GFXGLShader::setConstantsFromBuffer(GFXGLShaderConstBuffer* buffer)
|
||||||
|
|
||||||
// Copy new value into our const buffer and set in GL.
|
// Copy new value into our const buffer and set in GL.
|
||||||
dMemcpy(mConstBuffer + handle->mOffset, buffer->mBuffer + handle->mOffset, handle->getSize());
|
dMemcpy(mConstBuffer + handle->mOffset, buffer->mBuffer + handle->mOffset, handle->getSize());
|
||||||
|
|
||||||
switch(handle->mDesc.constType)
|
switch(handle->mDesc.constType)
|
||||||
{
|
{
|
||||||
case GFXSCT_Float:
|
case GFXSCT_Float:
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,15 @@
|
||||||
class GFXGLShaderConstHandle;
|
class GFXGLShaderConstHandle;
|
||||||
class FileStream;
|
class FileStream;
|
||||||
class GFXGLShaderConstBuffer;
|
class GFXGLShaderConstBuffer;
|
||||||
|
class GFXGLDevice;
|
||||||
|
|
||||||
class GFXGLShader : public GFXShader
|
class GFXGLShader : public GFXShader
|
||||||
{
|
{
|
||||||
typedef Map<String, GFXGLShaderConstHandle*> HandleMap;
|
typedef Map<String, GFXGLShaderConstHandle*> HandleMap;
|
||||||
public:
|
public:
|
||||||
GFXGLShader();
|
GFXGLShader(GFXGLDevice* device);
|
||||||
virtual ~GFXGLShader();
|
virtual ~GFXGLShader();
|
||||||
|
|
||||||
/// @name GFXShader interface
|
/// @name GFXShader interface
|
||||||
/// @{
|
/// @{
|
||||||
virtual GFXShaderConstHandle* getShaderConstHandle(const String& name);
|
virtual GFXShaderConstHandle* getShaderConstHandle(const String& name);
|
||||||
|
|
@ -99,6 +100,7 @@ protected:
|
||||||
U32 mConstBufferSize;
|
U32 mConstBufferSize;
|
||||||
U8* mConstBuffer;
|
U8* mConstBuffer;
|
||||||
HandleMap mHandles;
|
HandleMap mHandles;
|
||||||
|
GFXGLDevice* mDevice;
|
||||||
Vector<GFXGLShaderConstHandle*> mValidHandles;
|
Vector<GFXGLShaderConstHandle*> mValidHandles;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue