Skip to main content
GameDev.net gamedev.net
🔒 Locked

help with creating a structured buffer

Started by champloo Jan 9, 2013 at 7:11 AM 2 replies 4.7k views
Original Post
champloo
champloo

Hi,

here is what I am trying to do, which is just to create a structured buffer.



    D3D11_BUFFER_DESC sb_desc;
    sb_desc.ByteWidth = stride * numElements;
    sb_desc.Usage = D3D11_USAGE_DEFAULT;
    sb_desc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_UNORDERED_ACCESS;
    sb_desc.CPUAccessFlags = 0;
    sb_desc.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_STRUCTURED;
    sb_desc.MiscFlags |= drawIndirect ? D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS : 0;
    sb_desc.StructureByteStride = stride;
    DXCall( device->CreateBuffer( &sb_desc, NULL, &sb ) );

It fails every time, and if I remove the D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS flag, the error goes away.

I've tried different parameters but no luck at this point.

Any help is appreciated.

MJP
MJP

Create your device with the D3D11_CREATE_DEVICE_DEBUG flag and it will tell you why it's failing. If i recall correctly you can't use a structured buffer as an indirect args buffer, you have to make it a raw buffer instead (ByteAddressBuffer).

champloo
champloo
Create your device with the D3D11_CREATE_DEVICE_DEBUG flag and it will tell you why it's failing. If i recall correctly you can't use a structured buffer as an indirect args buffer, you have to make it a raw buffer instead (ByteAddressBuffer).

Thank you so much. you are right, structured buffer cannot be used as an indirect args buffer.

didn't know I can create device with the debug flag, it's very helpful.

Jason Z
Jason Z
Create your device with the D3D11_CREATE_DEVICE_DEBUG flag and it will tell you why it's failing. If i recall correctly you can't use a structured buffer as an indirect args buffer, you have to make it a raw buffer instead (ByteAddressBuffer).

Thank you so much. you are right, structured buffer cannot be used as an indirect args buffer.

didn't know I can create device with the debug flag, it's very helpful.

It is usually a good idea to add the flag in debug builds, and to not add it in release builds, since the end user may or may not have the ability to create a device with the debug flag active.

Jason Zink :: DirectX MVP   Direct3D 11 engine on CodePlex: Hieroglyph 3 Direct3D Books: 

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.