使用SlimDX设置常量缓冲区我一直在关注MicrosoftDirect3D11教程,但使用的是C#和SlimDX。我正在尝试设置一个常量缓冲区,但不确定如何创建或设置它。我只是尝试用常量缓冲区设置三个矩阵(世界、视图和投影),但我在每个阶段都在努力,创建、数据输入并将其传递给着色器。MSDN上的HLSL(我基本上是复制的)是:cbufferConstantBuffer:register(b0){matrixWorld;矩阵视图;矩阵投影;}MSDN上的C++代码是:ID3D11Buffer*g_pConstantBuffer=NULL;XMMATRIXg_World;XMMATRIXg_View;XMMATRIXg_投影;//设置常量缓冲区D3D11_BUFFER_DESCbd;ZeroMemory(&bd,sizeof(bd));bd.Usage=D3D11_USAGE_DEFAULT;bd.ByteWidth=sizeof(ConstantBuffer);0;如果(失败(g_pd3dDevice->CreateBuffer(&bd,NULL,&g_pConstantBuffer)))返回hr;////更新变量//ConstantBuffercb;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教程或资源也很好。谢谢。类似的应该可以:以上是C#学习教程:SettingconstantbufferswithSlimDX分享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注—varbuffer=newBuffer(device,newBufferDescription{Usage=ResourceUsage.Default,SizeInBytes=sizeof(ConstantBuffer),BindFlags=BindFlags.ConstantBuffer});varcb=newConstantBuffer();cb.World=Matrix.Transpose(世界);cb.View=Matrix.Transpose(view);cb.Projection=Matrix.Transpose(投影);vardata=newDataStream(sizeof(ConstantBuffer),true,true);数据.写(cb);数据.位置=0;context.UpdateSubresource(newDataBox(0,0,data),buffer,0);本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
