zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    侯捷STL课程及源码剖析学习1
    路边拾遗之其他模块(struct/csv/xlwt/smtp)
    面向对象之内置方法(简单)、组合。以及接口归一化设计与抽象类
    面向对象之继承与派生
    面向对象之类属性实例属性及其增删改查
    python中常用模块详解二
    函数之命名空间、作用域、闭包、装饰器四剑客。
    文件操作之1,2,3
    python中常用模块详解一
    python内置常用内置方法详解
  • 原文地址:https://www.cnblogs.com/minggoddess/p/4142851.html
Copyright © 2011-2022 走看看