小编obj*_*ect的帖子

DX11最小缓冲区大小

创建一些常量缓冲区后,其中一些缓冲区开始无法正确初始化.

使用名为MiscStream的结构创建一个常量缓冲区,该结构定义如下:

struct MiscStream {
    int rw,rh;
    float shine_factor;
    float dist_factor;
    int random_number;
};
Run Code Online (Sandbox Code Playgroud)

初始化为:

D3D11_BUFFER_DESC dx_misc_buffer_desc;
ID3D11Buffer* dx_misc_buffer;

ZeroMemory(&dx_misc_buffer_desc,sizeof dx_misc_buffer_desc);

    dx_misc_buffer_desc.BindFlags=D3D11_BIND_CONSTANT_BUFFER;
    dx_misc_buffer_desc.Usage=D3D11_USAGE_DYNAMIC;
    dx_misc_buffer_desc.ByteWidth=sizeof(MiscStream);
    dx_misc_buffer_desc.StructureByteStride=0;
    dx_misc_buffer_desc.CPUAccessFlags=D3D11_CPU_ACCESS_WRITE;
    dx_misc_buffer_desc.MiscFlags=0;

hr=dx_device->CreateBuffer(&dx_misc_buffer_desc,NULL,&dx_misc_buffer);
Run Code Online (Sandbox Code Playgroud)

hr将作为E_INVALIDARG返回,程序将失败.

许多其他常量缓冲区以这种方式设置,但它们的结构中都有向量和矩阵.

我将MiscStruct更改为

struct MiscStream {
    D3DXVECTOR3 __r;
    int rw,rh;
    float shine_factor;
    float dist_factor;
    int random_number;
};
Run Code Online (Sandbox Code Playgroud)

它没有错误地工作.

是否有最小结构尺寸?怎么了?

c++ directx buffer vector

1
推荐指数
1
解决办法
1064
查看次数

HLSL SamplerStates

我正在尝试在HLSL文件中定义一个简单的SamplerState以用于纹理.编译着色器时,出现错误:

error X3004: undeclared identifier 'Filter'
Run Code Online (Sandbox Code Playgroud)

资源:

// part of render.hlsl
SamplerState linear_sample=
{
    Filter=MIN_MAG_MIP_LINEAR;
    AddressU = Wrap;
    AddressV = Wrap;
};
Run Code Online (Sandbox Code Playgroud)

汇编:

hr=D3DX10CreateEffectFromFile("render.hlsl",NULL,NULL,"fx_4_0",D3D10_SHADER_ENABLE_STRICTNESS | D3D10_SHADER_DEBUG,0,dx_device,NULL,NULL,&dx_effect,&dx_err,NULL);'
Run Code Online (Sandbox Code Playgroud)

我已经在MSDN上查看了,我的HLSL文件似乎没有任何问题.我编译不正确吗?

c++ directx hlsl

0
推荐指数
1
解决办法
1926
查看次数

标签 统计

c++ ×2

directx ×2

buffer ×1

hlsl ×1

vector ×1