博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DirectX11 渲染——输入装配、绑定着色器、绘制
阅读量:4087 次
发布时间:2019-05-25

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

DirectX11 渲染——输入装配、绑定着色器、绘制

1.输入装配有哪些工作要做?

  1. 每次渲染我们都要考虑使用哪个输入布局来渲染几何图形。所以我们使用Direct3D环境对象的IASetInputLayout函数用于绑定我们所创建的顶点布局,该函数只有一个单一的类型为 ID3D11InputLayout 的对象。
  2. 此外,IASetVertexBuffers函数用来设置一个或多个顶点缓存:
    第一个参数是绑定缓存的开始槽,就是你传递过去的创建好的顶点缓存数组中的第一个你要使用的缓存序号。
    第二个参数是传进去的顶点缓存数量。
    第三个参数是一个或多个缓存数组。
    第四个参数是步长,它表示每个顶点的字节数。
    第五个参数是从缓存的开始位置到顶点的第一个元素的开始位置的字节偏移量。
  3. 函数 IASetPrimitiveTopology 用于告诉 Direct3D 我们所渲染的几何图形的类型。例如渲染一个三角形列表我们将使用标识 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST 作为函数的参数,或者我们想渲染三角形带将使用标识
    D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP。这些标识总共有 42 个值,它们大多数处理更加高级的几何体的顶点控制,该列表见于 DirectX 的文档。

2. 如何绑定着色器?

通过调用 Direct3D 设备环境的 VSSetShader 函数来设置顶点着色器,调用 PSSetShader 来设置像素着色器。这两个函数都采用着色器作为参数,一个类型实例数组指针,和该数组的大小。我们将在第七章讨论类型实例接口。

3. 设置好一切工作后如何渲染绘制?

Direct3D 设备环境对象的Draw函数采用如下参数:

第一个参数,顶点数组中的顶点数量。
第二个参数,顶点的开始位置(它实际上是你所希望开始绘制的顶点缓存的偏移量)。

4. 渲染几何图形的例子

float clearColor[4] = { 0.0f, 0.0f, 0.25f, 1.0f };d3dContext_->ClearRenderTargetView( backBufferTarget, clearColor );unsigned int stride = sizeof( VertexPos );unsigned int offset = 0;d3dContext_->IASetInputLayout( inputLayout );d3dContext_->IASetVertexBuffers( 0, 1, &vertexBuffer_, &stride, &offset );d3dContext_->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST );d3dContext_->VSSetShader( solidColorVS, 0, 0 );d3dContext_->PSSetShader( solidColorPS, 0, 0 );d3dContext_->Draw( 3, 0 );swapChain_->Present( 0, 0 );

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

你可能感兴趣的文章
Koa2框架原理解析和实现
查看>>
vue源码系列文章good
查看>>
你不知道的Virtual DOM
查看>>
VUE面试题总结
查看>>
写好JavaScript条件语句的5条守则
查看>>
原生JS中DOM节点相关API合集
查看>>
【TINY4412】U-BOOT移植笔记:(7)SDRAM驱动
查看>>
【TINY4412】U-BOOT移植笔记:(12)BEEP驱动
查看>>
单链表的修改和删除
查看>>
C++的三个基本特征:封装、继承、多态
查看>>
C++虚函数的总结
查看>>
什么是URL地址?
查看>>
C++多态的实现方式总结
查看>>
学习C++需要注意的问题
查看>>
C++模板
查看>>
C++双冒号(::)的用法
查看>>
【Unity】封装SQLite管理类
查看>>
【Unity】面试题整理
查看>>
【C#】如何实现一个迭代器
查看>>
【Unity】Destroy和DestroyImmediate的区别
查看>>