游戏开发论坛

 找回密码
 立即注册
搜索
123
返回列表 发新帖
楼主: bowen

一个有关D3D9里的HLSL函数tex2D()用法的问题

[复制链接]

13

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2004-11-4 09:48:00 | 显示全部楼层

Re:一个有关D3D9里的HLSL函数tex2D()用法的问题

我用了浮点纹理,还是有问题,晕!

3

主题

95

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2004-11-4 14:01:00 | 显示全部楼层

Re:一个有关D3D9里的HLSL函数tex2D()用法的问题

我觉得你是有一个问题没有搞清楚。
tex2D采样的纹理,可以是任何一种纹理格式,他不会理会你是X8R8G8B8还是G16R16B16之类的格式,不管你是什么样的纹理格式,tex2D采样出来之后的颜色值总是在[0,1]之间。
哪怕你的纹理是X8R8G8B8的格式也一样的变成了[0-1],这也就是说,RGBA分别除以了255。
所以,你如果想得到整数值,那么就乘以255不就完了??为什么太大我实在想不明白,好象太大了这种说法太不负责任,除以255得来的值再乘以255不就恢复到原样了?哪来的什么好象???

还有一点,我不明白你为什么非得要得到0-255之间的值?在我所知,显卡的所有计算,最好基于浮点数,他是浮点能力强整数计算差的一个东西。如果你非得将其变成0-255之间,其实他保存的还是小数啊。只不过是0.0~255.0而已。你把他整体放大255倍又是何苦呢?

而且,最后PS输出的时候只能是输出一个COLOR啊,这个COLOR他也只能是[0,1]之间的值,所以最后你又得再除以255变回来,这不是多此一举么?

还有,再明确一点,tex2D采样出来的是一个颜色值,是你第二个参数给定位置的颜色值。至于第二个参数的范围是多少,这就无所谓了,要看你的sampler address state的设置,决定着采样出来的颜色到底是什么。总之不可能小于0也不可能大于1就是了。

13

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2004-11-9 16:45:00 | 显示全部楼层

Re:一个有关D3D9里的HLSL函数tex2D()用法的问题

我要得到0-255之间的值的原因,我在11楼说了一下。还有,用数组做查找表的方法好象在这里不行,大概是因为指令太多了,GPU承受不了,编译也通不过,所以我才用纹理放数据来做查找表。但现在不知道怎么才能使读出来的数和存进去的数大小一样。
还有一个问题,我从纹理里读数据的过程是放在fx文件里的,我想看读出来的结果,在那个变量sourcevals的地方设断点,但调试的时候说:sourcevals        CXX0017: 错误: 没有找到符号“sourcevals”,这是为什么啊?怎么才能看到这个变量的值?       

13

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2004-11-10 14:24:00 | 显示全部楼层

Re:一个有关D3D9里的HLSL函数tex2D()用法的问题

大家告诉我一下D3D里vs,ps调试的时候该怎么设置啊?
怎么看fx里变量的值?
谢谢!

13

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2004-11-11 15:26:00 | 显示全部楼层

Re:一个有关D3D9里的HLSL函数tex2D()用法的问题

还有个问题,本来纹理里一个像素存进去R,G,B,A四个数,用一条tex2D()函数读出来的结果还是4个数吗?还是变为1个数了?知道者请指点一下。

13

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
 楼主| 发表于 2004-11-11 21:04:00 | 显示全部楼层

Re:一个有关D3D9里的HLSL函数tex2D()用法的问题

咋没人顶一下呢,小弟先谢了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 05:42

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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