渲染矩形
渲染矩形只需要将顶点及顶点索引做修改,建立两个三角形,并且修改图元拓扑为:IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST)
,其余在渲染三角形的基础上即可完成。
// 1. 顶点集合
VertexType vertexs1[] = {
// 顶点 | 颜色
{-1.0f, -1.0f, 0.0f, 0.0f, 1.0f}, // 左下角
{1.0f, 1.0f, 0.0f, 1.0f, 0.0f}, // 右上角
{1.0f, -1.0f, 0.0f, 1.0f, 1.0f}, // 右下角
{-1.0f, 1.0f, 0.0f, 0.0f, 0.0f} // 左上角
};
// 2. 顶点索引集合
unsigned int indices[] = {
0, 1, 2, // 第一个三角形(左下顶点起顺时针)
0, 3, 1 // 第二个三角形
};
常量缓存
多个常量缓存使用,可参考:Direct3D 11教程7:纹理映射和常量缓存
着色器增加头文件编译
将通用着色器里的结构体定义在一个头文件中,然后在着色器中include
引用它。
需要注意,应该使用如下的着色器编译方法:
D3DCompileFromFile(vsFilename, NULL, D3D_COMPILE_STANDARD_FILE_INCLUDE,
"ColorVsMain", // 着色器入口函数
"vs_5_0",
D3D10_SHADER_ENABLE_STRICTNESS,
0,
&m_vertexShaderBuffer, &errorMessage);
第三个参数修改为D3D_COMPILE_STANDARD_FILE_INCLUDE
。该字段用于决定如何处理包含文件,会按照当前着色器代码的相对路径搜索对应的头文件并包含进来。
如果将第三个参数默认设置为nullptr
,则编译着色器时会报错:error X1505: No include handler specified, can't perform a #include. Use D3DX APIs or provide your own include handler.
网友评论