Merge branch 'Preview4_0' into alpha40/SGCleanups2

This commit is contained in:
AzaezelX 2021-09-22 18:47:31 -05:00
commit c523951e65
37 changed files with 638 additions and 202 deletions

View file

@ -290,7 +290,7 @@ GFXAdapter *GFXInit::getBestAdapterChoice()
{
S32 adapterIdx = dAtoi(adapterDevice.c_str());
if (adapterIdx == -1)
adapter = chooseAdapter(adapterType, outputDevice.c_str());
adapter = chooseAdapter(NullDevice, outputDevice.c_str());
else
adapter = chooseAdapter(adapterType, adapterIdx);
}

View file

@ -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;
}

View file

@ -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)
{
@ -707,7 +708,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)
{
@ -724,7 +726,6 @@ void GFXGLShader::initHandles()
dMemcpy(mConstBuffer + handle->mOffset, &handle->mSamplerNum, handle->getSize());
}
}
glUseProgram(0);
//instancing
if (!mInstancingFormat)
@ -831,6 +832,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:

View file

@ -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;
};