游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3272|回复: 3

请教PIX调试HLSL

[复制链接]

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2011-6-28 14:43:00 | 显示全部楼层 |阅读模式
目标:将4行向量 row0,row1,row2,row3,合并为float4x4 mat,请诸位老大帮帮忙

1,        这4行float4向量分别存储于 寄存器r1,r2,r3,r0

2,        这是float4x4的构造过程,可见新的mat矩阵将会放置到 r4,r5,r6,r0中。
当写入第一个数0.024后,r4.x正确写入,但变量mat却显示同时写了r4.y [0.000]

3,        当写入第二个数0.001后,r4.y正确写入,但变量mat却显示同时将r4.x,r4.z置0了
寄存器中观察r4却是正常的,r4.x并不是0

4,        当写入第二个数0.000后,r4.z正确写入,但变量mat却显示r4面目全非了
寄存器中观察r4.x,r4.y,r4.z却是正常的

5,        构造完成,变量mat一塌糊涂
寄存器中观察r4,r5,r6,r0却是正常的

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-7-1 14:11:00 | 显示全部楼层

Re:请教PIX调试HLSL

这是XNA4中的.fx效果文件
fx文件中,全局float4x4变量由外部赋值,对VS PS而言是只读的
问题出在局部变量。这是要在VS中初始化一个float4x4,始终不能成功

2

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
 楼主| 发表于 2011-7-2 15:17:00 | 显示全部楼层

Re:请教PIX调试HLSL

我级别太低不能在信箱中回复

我想这不大可能是int float转换出的问题,这里不涉及int
已得到4个行向量float4,要将之整合为float4x4

用f32tof16()同样失败的[把32位float转换成16位float]
如果是数据太长影响到了赋值,而16位的float依然不行。

我差不多卡在这里了。
没想到VS中的 局部矩阵变量 这么难折腾,我怀疑是编译器本身有问题,几乎所有能想的办法都尝试了。

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2012-10-29 18:09:00 | 显示全部楼层

Re:请教PIX调试HLSL

矩阵的合并方法是正确的。不过根据计算机图形学,一个坐标类矩阵似乎是
mat { x,0,0,0
      0,y,0,0
      0,0,z,0
      0,0,0,w}
不一定对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-10 10:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表