HLSL定义float4 Pos:POSITION的寄存器绑定问题(Render Monkey)

在HLSL编译器中写的float4 pos : POSITION0,编译到asm中是dcl_position v0。看起来默认就是将:  POSITION0绑定到v0了。

然后重新写一段asm,在vertex stream map中使用的还是POSITION0,asm无论使用dcl_position v0还是dcl_position v1-v15,均可以正常运行。但是如果vertex stream map中使用的不是POSITION0,而是POSITION1-POSITION15,那么不管在asm中绑定到哪一个寄存器,都是黑屏,没有任何图像 输出(RenderMonkey中试验的)。

       当时一直以为是模型内部规定好了Semantic,比如模型顶点数据默认是0号流,然后你绑定POSITION0则会自动连接上。如果设置成其他流就连不上数据。后来发现不是这样。

       回家在dx demo里测试了一下。在 Stream Mapping指定好了POSITION1,Shader指定了POSITION1并应用设置,模型绘制正常。设置成其他的index也没有问题。

       输出的 POSITION0,这个只有0才有效,设置其他的index的话直接就报错了(这个很正常,无可非议)。

       如此看来,果然就是RenderMonkey的BUG了。

       原帖链接:http://www.opengpu.org/forum.php?mod=viewthread&tid=15885&extra=page%3D2

 

      

      

转载于:https://www.cnblogs.com/infintyward/p/3360799.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值