博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DirectX11 创建顶点缓存
阅读量:4087 次
发布时间:2019-05-25

本文共 1512 字,大约阅读时间需要 5 分钟。

创建顶点缓存

  1. 顶点缓存有什么作用?

    顶点缓存用于储存网格模型的所有顶点数据。当我们在Direct3D中创建一块顶点缓存时,我们是在创建一个内存的最优位置上的对象,该最优位置例如是图形硬件的显存,它由硬件的设备驱动所选择。当Direct3D渲染我们的对象时,它通过图形总线来变换这些缓存信息,通过渲染管线执行必要的操作来最终决定几何图形是否被渲染在屏幕上。这里说的“不”是由于几何图形最终被Direct3D 判定为不可见的。尝试渲染大量的不可见的几何图形会导致性能下降,大多数的高级的3D 商业视频游戏使用一种技术,该技术决定是否几何图形预先可见,并且只提交那些可见或者潜在可见的图形给图形硬件处理。这是一个高级主题,它属于场景管理部分并且处理多个次主题比如裁剪和划分算法。

  2. 如何创建顶点缓存?

    首先我们要用一个数组来保存顶点的信息。如示例:

    VertexPos vertices[] = { XMFLOAT3( 0.5f, 0.5f, 0.5f ), XMFLOAT3( 0.5f, -0.5f, 0.5f ), XMFLOAT3( -0.5f, -0.5f, 0.5f ) };

    利用设备的CreateBuffer函数来创建顶点缓存。

    第一个参数是设备描述对象,用于描述顶点缓存。
    第二个参数是子资源数据,该结构的pSysMem成员是一个已经初始化内存的指针,在现在这种情况是我们发送给缓存填充的内存,也就是上面的顶点数组。
    第三个参数保存创建的缓存对象指针。

  3. 顶点缓存如何描述?

    缓存描述主要用到如下成员:

    • Usage,缓存用法。这里我们用D3D11_USAGE_DEFAULT。
    • BindFlags,绑定标识,这里我们用顶点缓存绑定标识:D3D11_BIND_VERTEX_BUFFER
    • ByteWidth,缓存的字节宽度,这里可以用sizeof(vertices)。
  4. 子资源数据如何创建?

    这里我们可以简单地将D3D11_SUBRESOURCE_DATA结构体对象的pSysMem传进vertices顶点数组即可。

下面是一个创建三角顶点缓存示例:

VertexPos vertices[] =     {     XMFLOAT3( 0.5f, 0.5f, 0.5f ),     XMFLOAT3( 0.5f, -0.5f, 0.5f ),     XMFLOAT3( -0.5f, -0.5f, 0.5f )     };     D3D11_BUFFER_DESC vertexDesc;     ZeroMemory( &vertexDesc, sizeof( vertexDesc ) );     vertexDesc.Usage = D3D11_USAGE_DEFAULT;     vertexDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;     vertexDesc.ByteWidth = sizeof( VertexPos ) * 3;     D3D11_SUBRESOURCE_DATA resourceData;     ZeroMemory( &resourceData, sizeof( resourceData ) );     resourceData.pSysMem = vertices;     ID3D11Buffer* vertexBuffer;     HRESULT result = d3dDevice_->CreateBuffer( &vertexDesc, &resourceData,&vertexBuffer );

转载地址:http://zjyii.baihongyu.com/

你可能感兴趣的文章
最小费用流 Bellman-Ford与Dijkstra 模板
查看>>
实现高性能纠删码引擎 | 纠删码技术详解(下)
查看>>
scala(1)----windows环境下安装scala以及idea开发环境下配置scala
查看>>
zookeeper(3)---zookeeper API的简单使用(增删改查操作)
查看>>
zookeeper(4)---监听器Watcher
查看>>
zookeeper(2)---shell操作
查看>>
mapReduce(3)---入门示例WordCount
查看>>
hbase(3)---shell操作
查看>>
hbase(1)---概述
查看>>
hbase(5)---API示例
查看>>
SSM-CRUD(1)---环境搭建
查看>>
SSM-CRUD(2)---查询
查看>>
SSM-CRUD (3)---查询功能改造
查看>>
Nginx(2)---安装与启动
查看>>
springBoot(5)---整合servlet、Filter、Listener
查看>>
C++ 模板类型参数
查看>>
C++ 非类型模版参数
查看>>
设计模式 依赖倒转原则 & 里氏代换原则
查看>>
DirectX11 光照
查看>>
图形学 图形渲染管线
查看>>