DirectX11 创建输入布局
来源:互联网 发布:山治两年后的实力知乎 编辑:程序博客网 时间:2024/05/16 17:54
创建输入布局
1. 输入布局有什么作用?
当我们发送几何图形到显卡上时(发送给顶点着色器),我们是发送它的一大块数据。 为了让 Direct3D 知道所定义的各种属性,它们的顺序,和大小,我们使用一种叫做输入布局的东西告诉 API 关于我们所绘制的几何图形的数据的顶点布局。在Direct3D 中,我们使用一个类型为 D3D11_INPUT_ELEMENT_DESC 的数组来描述一个顶点结构的顶点布局。该类型结构有如下成员:
- SemanticName,语义名字,是一个描述元素目的的字符串。例如元素作为顶点的位置,则它的语义就是“ POSITION”。我们可以使该元素通过语义“ COLOR”用于顶点颜色,通过“ NORMAL”用于法线向量等等。
- SemanticIndex,语义索引,一个顶点有多个元素用于相同的语义但是却值不同,例如如果一个顶点有两种颜色,那么我们能够使用一个语义索引 0 表示第一种颜色,索引 1 表示第二种颜色。更多示例如,一个顶点有多个贴图坐标,当 UV 贴图和光照贴图同时使用时就产生了上述情况。
- Format,元素的格式,例如使用 X,Y 和 Z 浮点值表示一个位置,我们在该顶点所使用的格式就是DXGI_FORMAT_R32G32B32_FLOAT, 这里 32bits(4 字节)是给 R,G,B 的分量大小。尽管格式分量以 R,G,B 来命名,但它能够用来表示 X,Y,Z。不要让颜色的概念迷惑了你,实际上这些格式可以用来表示很多而不仅仅是颜色。
- InputSlot,输入槽,在 Direct3D 中,能够同时绑定和传递多套顶点缓存,我们使用该成员来指定的顶点缓存索引。
- AlignedByteOffset,字节对齐偏移量,它用来告诉 Direct3D 顶点开始位置的偏移,当指定了元素的顶点缓存后。
- InputSlotClass,它用于描述是否元素使用每一个顶点或者每一个实例(逐对象)。 逐对象属性处理一个高级主题,叫做实例化,这个技术用于绘制多个有相同网格表面的对象,而使用一个绘制调用——该技术使得渲染性能得到很大的提升。
- InstanceDataStepRate,它用于告诉 Direct3D在场景中需要绘制多少个实例。
2. 如何创建顶点输入布局?
输入布局由调用 Direct3D 设备函数 CreateInputLayout所创建。该函数有5个参数:
第一个参数是顶点布局描述对象数组。
第二个参数是上面的数组的大小。
第三个参数有输入标识的已经编译的顶点着色器代字节码,它将会被数组的每个元素所验证
第四个参数是已经编译的顶点着色器字节码大小
3. 创建输入布局示例代码
D3D11_INPUT_ELEMENT_DESC vertexLayout[] ={ { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }};unsigned int totalLayoutElements = ARRAYSIZE( vertexLayout );HRESULT result = d3dDevice_->CreateInputLayout( vertexLayout, totalLayoutElements, vsBuffer->GetBufferPointer( ), vsBuffer->GetBufferSize( ), &inputLayout );vsBuffer->Release( );if( FAILED( d3dResult ) ){ return false;}
0 0
- DirectX11 创建输入布局
- DirectX11 输入装配阶段
- DirectX11 创建顶点缓存
- DirectX11 创建混合状态
- DirectX11创建dx11项目
- DirectX11 顶点和顶点布局
- DirectX11 创建渲染目标视图
- DirectX11 创建视图-投影矩阵
- DirectX11 创建和启用纹理
- 使用FreeType实现DirectX11的文本输入
- DirectX11 学习笔记10 - 用文件存储顶点布局
- DirectX11 渲染——输入装配、绑定着色器、绘制
- DirectX11 输入设备——DirectInput检测鼠标、键盘状态
- DirectX11入门教程——第三篇:DirectX11的设备创建相关
- DirectX11 学习笔记3 - 创建一个立方体 和 坐标轴
- DirectX11 设备、交换链和设备环境如何创建
- DirectX11学习笔记 创建两个不同的精灵精灵
- DirectX11 编译着色器、创建顶点着色器、创建像素着色器
- 排序算法之归并排序
- ZOJ 1940 Dungeon Master
- AYIT暑假集训大二第一周周六赛 B - 汉字统计
- Html 5知识总结
- 动态规划:从新手到专家(当然不可能看完就成专家)(转载)
- DirectX11 创建输入布局
- AFNetworking 的导入(一)
- 浅谈java main()
- POJ 2350Above Average
- CEF Xilium.CefGlue 在当前窗口中打开所有链接(防止弹窗)
- Linux通配符
- POJ 2530Tetris Alphabet
- vim的使用
- wyh2000 and a string problem(模拟)