zoukankan      html  css  js  c++  java
  • dx11 入门 Tutorial 02: 数据传入GPU的设置 和绘制一个三角形 DirectXSampleBrowser(June 2010)

      烦...一年前看过教程,但全忘掉了,这一年我都干什么了、、、

    教程2遇到的两个error:

    error 1:ID3DBlob调用不成功 ,是重复调用版本冲突的原因?ID3DBlob在D3DCommon.h中, 因为window include里和SDK里各有一份,造成了冲突,修改头文件的调用,先调用SDK内的即可。参考:http://www.cnblogs.com/Wilson-Loo/archive/2013/01/20/2797902.html 那为什么先后顺序就解决问题呢》

    error 2:FXC : error X3501: 'main': entrypoint not found   项目属性里shader的设置问题... 参考http://stackoverflow.com/questions/20363360/fxc-error-x3501-main-entrypoint-not-found

    这一讲主要是拷贝数据到GPU中,并设置数据属性,告知GPU。

    笔记1:That takes care of storing vertex information in system memory in our application. However, when we feed the
    GPU the vertex buffer containing our vertices, we are just feeding it a chunk of memory. The GPU must also know
    about the vertex layout in order to extract correct attributes out from the buffer. To accomplish this requires
    the use of an input layout.

    意思:设置vertex的struct,存储vertex的信息后在vertexBuffer内,但当我们向GPU填充vertexBuffer内的数据时,GPU不知道这块数据干嘛用的,怎么用,为了告诉GPU数据正确属性,我们使用input layout

    // Define the input layout
    D3D11_INPUT_ELEMENT_DESC layout[] =
    {
        { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },  
    };
    UINT numElements = ARRAYSIZE(layout);
    

    如上,告知GPU,input到vertexShader里数据块格式为12Byte,

    vertex Layout创建前提是:我得有vertexShader,告诉device我需要layout才行;所以ID3DBlob指向编译后shader的二进制地址,然后ID3DBlob和相应的device、context绑定这个inputLayout,。

    总结:总体流程:

    1.编译fx   VS和PS

    2.设置InputLayout的参数,用于input到GPU

    3.device、context分别创建和设置vertexLayout,并和相应的编译后的vertexShader绑定(ID3DBlob),

    4.device创建vertexBuffer,

        context设置相应的buffer起始位置、跨度、图元绘制方式,即render时,告诉gpu拷贝哪一段buffer,怎么拷贝。

    记住:layout的设置告诉cpu数据的使用方式

            vertexBuffer的创建设置(起始位置、跨度)告诉拷贝给gpu实际的数据

     

  • 相关阅读:
    关于Eclipse开发插件(三)
    关于Eclipse插件开发(一)
    关于Eclipse中开发插件(二)
    Android-ImageView的属性android:scaleType作用
    bigautocomplete实现联想输入,自动补全
    Sqlite-Sqlite3中的数据类型
    C#/Sqlite-单机Window 程序 sqlite 数据库实现
    C#/Sqlite-SQLite PetaPoco django 打造桌面程序
    桌面轻量级数据库的选择:Access、SQLite、自己编写?
    如何开始创业
  • 原文地址:https://www.cnblogs.com/dust-fly/p/4229902.html
Copyright © 2011-2022 走看看