美文网首页
使用Dx11渲染纹理3——渲染矩形

使用Dx11渲染纹理3——渲染矩形

作者: 上官宏竹 | 来源:发表于2022-01-12 16:48 被阅读0次

    渲染矩形

    渲染矩形只需要将顶点及顶点索引做修改,建立两个三角形,并且修改图元拓扑为: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.

    完整代码见:使用git log可以查看渲染矩形的过程

    相关文章

      网友评论

          本文标题:使用Dx11渲染纹理3——渲染矩形

          本文链接:https://www.haomeiwen.com/subject/likyqrtx.html