As it turns out, the buffer was never binding and instead was binding to a Compute Shader Slot.
Its a nice and easy fix though after pulling all the source apart to find the little blighter..
Go to OgreCbShaderBuffer.cpp line 72:
You will notice that it is binding the geometry shader to the compute shader slot :
Code: Select all
static_cast<ConstBufferPacked*>( cmd->bufferPacked )->bindBufferCS( cmd->slot );
Code: Select all
static_cast<ConstBufferPacked*>( cmd->bufferPacked )->bindBufferGS( cmd->slot );
Hope this helps
p.s. Sorry if this has already been fixed, i havent updated my 2.1 build in some time now, but its possible its still there as i dont see many things about Geometry Shaders on the forums apart from a couple with Unlit.
Edit: Also, is this code chunk missing from the OgreD3D11RenderSystem.cpp 3278 approx:
Code: Select all
/// Geometry Shader binding
{
if (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0)
{
mDevice.GetImmediateContext()->GSSetShaderResources(static_cast<UINT>(0), static_cast<UINT>(opState->mTexturesCount), &opState->mTextures[0]);
if (mDevice.isError())
{
String errorDescription = mDevice.getErrorDescription();
OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR,
"D3D11 device cannot set geometry shader resources\nError Description:" + errorDescription,
"D3D11RenderSystem::_render");
}
}
}