• Directx11教程36 纹理映射(6)


       本章主要是整理代码,做以下两件事情:

    1、把世界坐标矩阵的计算,放在GraphicsClass的渲染函数中,之前放在D3DClass中,而且只是返回一个单位矩阵,没任何作用。如果要使其起作用,就要对每个model类都单独设置,很麻烦,比如我要画两个颜色立方体,岂不是要建立两个model类,而只是世界坐标矩阵不同。

        放在Render函数中后,我们主要通过一些D3D的矩阵变化函数来计算世界坐标系。比如:

        //执行平移操作,得到最终的模型世界矩阵
        D3DXMatrixTranslation(&worldMatrix1, 4.0, 0.0, 0.0);

        就得到一个沿着x轴移动4个单位的世界矩阵。这样,如果要渲染多个cube,我们只需改变世界矩阵,再执行一次shader渲染就可以了。

        比如下面代码,就是画2个颜色立方体:

       // 把模型顶点和索引缓冲放入管线,准备渲染.
        m_Model->Render(m_D3D->GetDeviceContext());
       
      //执行平移操作,得到最终的模型世界矩阵
        D3DXMatrixTranslation(&worldMatrix1, 4.0, 0.0, 0.0);

        // 用shader渲染.
        result = m_ColorShader->Render(m_D3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix1, viewMatrix, projectionMatrix);
        if(!result)
            {
            return false;
            }
      //执行平移操作,得到最终的模型世界矩阵
        D3DXMatrixTranslation(&worldMatrix1, 8.0, 0.0, 0.0);
        // 用shader渲染.
        result = m_ColorShader->Render(m_D3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix1, viewMatrix, projectionMatrix);
        if(!result)
            {
            return false;
            }

    运行后界面如下:

    image

    2、修改PlaneModelClass,之前我们只是画了2个大三角形,现在我们改为网格的方式,这样便于纹理贴图,比如贴上草地的纹理。

    完整的代码请参考:

    工程文件myTutorialD3D11_29

    代码下载:

    https://files.cnblogs.com/mikewolf2002/d3d1127-28.zip

    https://files.cnblogs.com/mikewolf2002/pictures.zip

  • 相关阅读:
    javascript 获取 sx:datetimepicker 的值
    struts-dojo的使用
    struts-dojo的使用
    HTML 标签的 target 属性
    HTML 标签的 target 属性
    关于用struts2框架中iframe对应的jsp页面的不到action的值的问题
    关于用struts2框架中iframe对应的jsp页面的不到action的值的问题
    浏览器加载、渲染html的顺序和页面优化
    浏览器加载、渲染html的顺序和页面优化
    linux 安装swoole扩展方法
  • 原文地址:https://www.cnblogs.com/mikewolf2002/p/2445883.html
Copyright © 2020-2023  润新知