1
저는 Microsoft Direct3D11 튜토리얼을 따르고 있지만 C#과 SlimDX를 사용하고 있습니다. 상수 버퍼를 설정하려고하지만 생성 또는 설정 방법을 모르겠습니다.SlimDX를 사용하여 상수 버퍼 설정
저는 상수 버퍼를 사용하여 3 개의 행렬 (월드, 뷰 및 프로젝션)을 설정하려고했지만 모든 단계, 생성, 데이터 입력 및 셰이더로 전달하는 데 어려움을 겪고 있습니다.
(나는 기본적으로 복사 한) MSDN의 HLSL은 다음 MSDN에
cbuffer ConstantBuffer : register(b0)
{
matrix World;
matrix View;
matrix Projection;
}
는 C++ 코드는 다음과 같습니다
는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);
사람이 SlimDX이 번역하는 방법을 알고 있나요? SlimDX 튜토리얼이나 리소스가 유용 할 수도 있습니다.
감사합니다. 이와 유사한
: SlimDX.D3DCompiler.ConstantBuffer 제로 인수를 생성자가없는이 (생성자가 ConstantBuffer (INTPTR 포인터)이며 또한 cb.World, cb.View 및 cb.Projection은 존재하지 않습니다. Visual Studio는이 파일을 오류로 플래그 지정합니다 ("SlimDX.D3DCompiler.ConstantBuffer에는 World 정의가 없습니다."). SlimDX의 최신 안정 빌드를 사용하고 있습니다. 1 주일 전 다운로드) –
이 스 니펫의 ConstantBuffer는 설정하려는 상수가 포함 된 사용자 유형을 나타냅니다. 원하는대로 호출 할 수 있습니다. – MikeP
아아아, 감사합니다. –