Configurar el búfer constante usando SlimDX

He estado siguiendo los tutoriales de Microsoft Direct3D11 pero usando C # y SlimDX. Estoy tratando de configurar el búfer constante pero no estoy seguro de cómo crearlo o configurarlo.

Simplemente estoy tratando de establecer tres matrices (mundo, vista y proyección) usando un búfer constante, pero estoy luchando en cada etapa, creación, entrada de datos y pasarlo al sombreador.

El HLSL en MSDN (que esencialmente he copiado) es:

cbuffer ConstantBuffer : register( b0 )
{
    matrix World;
    matrix View;
    matrix Projection;
}

El código C ++ en MSDN es:

ID3D11Buffer* g_pConstantBuffer = NULL;
XMMATRIX g_World;
XMMATRIX g_View;
XMMATRIX g_Projection;

//set up the constant buffer
D3D11_BUFFER_DESC bd;
ZeroMemory( &bd, sizeof(bd) );
bd.Usage = D3D11_USAGE_DEFAULT;
bd.ByteWidth = sizeof(ConstantBuffer);
bd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
bd.CPUAccessFlags = 0;
if( FAILED(g_pd3dDevice->CreateBuffer( &bd, NULL, &g_pConstantBuffer ) ) )
    return hr;


//
// Update variables
//
ConstantBuffer cb;
cb.mWorld = XMMatrixTranspose( g_World );
cb.mView = XMMatrixTranspose( g_View );
cb.mProjection = XMMatrixTranspose( g_Projection );
g_pImmediateContext->UpdateSubresource( g_pConstantBuffer, 0, NULL, &cb, 0, 0 );

¿Alguien sabe cómo traducir esto a SlimDX? O si alguien conoce algún tutorial o recurso de SlimDX que también sería útil.

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta