• load d3dcompiler_46.dll failed


    https://gist.github.com/rygorous/7936047

    编shader的时候遇到这个warning不知道是不是什么隐患。。从今天开始要做新项目了

    尝试从同事那里要了这dll 拿得x86版本的(我也不知道为什么 )再编就没有这个warning了 但是后来又出现了 

    我把dll换成x64也还是有这个warining,,,不理它了 有可能是我把shader的profile换成vs4.0的缘故,或者。。。。某种未知原因

    我换vs4.0是因为 遇到一个error 说

    Unable to compile vertex shader - profile not supported

    通过跟代码发现shaderprofile 如果是vs5.0那么需要D3D feature level >=11.1

    如果是vs4.0那么需要D3D feature level >=10.1

    所以我把所有的shader改成vs4.0 ps4.0这样这个profile not supproted的error没有了 

    又往下跑了一段距离 报了一个warining 一个error

    大概意思是stream0太小和vs到ps的postion有问题 ,这确实是编译shader的时候遇到的问题

    一个叫postion的semantic 不知道该怎么改之前ps4和d3d两次编译的时候 这个semantic是替换成s_position

    现在这完全解释不通,因为s_positon是pssl里面的,而postion这个semantic也是存在的,这样以前的d3dcompiler是怎么编译过的呢

    我看了下msdn的docs

    尝试修改下position

    根据文档vs用position vs到ps 用vpos 在d3d10之前

     EXECUTION WARNING #355: DEVICE_DRAW_VERTEX_BUFFER_STRIDE_TOO_SMALL

    EXECUTION ERROR #362: DEVICE_DRAW_POSITION_NOT_PRESENT

    做了第一步修改之后 就是把position改成vpos 那个warning消失了

    error还在,也就是说,这个ps的error和vs那个warining不是因果关系。。。。。

    error描述是ps并不为空但是position is not provided by the last shader before the rasterization unit 

    这这个意思 还是vs到ps的semantic的问题

    这个error终于解决了 就是SV_POSITION 这个semantic的问题

    很重要的一点是vs的semantic仍然是POSITION

    但是vs到ps需要用SV_POSITION

    EXECUTION ERROR #362: DEVICE_DRAW_POSITION_NOT_PRESENT

    that is it

     有个关键词 shader porting

  • 相关阅读:
    环境装好,开始学习
    懒惰了
    我的net试验田
    时间不够用
    【转帖】关于委托的精彩解说(非常形象)
    【转帖】 CLR 全面透彻解析:托管和本机代码互操作性
    【转贴】C#中的API32
    【转帖】Windows Mobile 开发系列文章收藏 Windows Mobile 6.x
    弹跳圣经——扣篮梦
    【转帖】.Net中C#的DllImport的用法
  • 原文地址:https://www.cnblogs.com/minggoddess/p/4142851.html
Copyright © 2020-2023  润新知