游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2623|回复: 7

都有什么函数可以用来把二维纹理里指定位置的像素值读

[复制链接]

13

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2004-10-30 15:12:00 | 显示全部楼层 |阅读模式
我有个关于D3D9里读取纹理的问题请教大家一下。
下面两条语句:
float4 filterval;
filterval = tex2D( g_samFilter, float2(x,y));
其中g_samFilter为指向2维纹理的指针,我定义的纹理g_samFilter的像素格式是D3DFMT_A8R8G8B8,就是每个像素存放R,G,B,A四个整数,每个整数占8位,所以范围为0-255。
上面两条语句的目的是用tex2D函数把纹理里的每个像素的R,G,B,A值分别取出来,用在其他地方。
但我那样读出来好象不对了,是不是因为filterval的范围变为0-1,把纹理里读出来的值改变了?
请问还有什么函数可以用来把二维纹理里指定位置的像素值读出来,赋给别的变量?
谁知道的话帮我回答一下,多谢了!!!
[em20]

13

主题

61

帖子

61

积分

注册会员

Rank: 2

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

Re:都有什么函数可以用来把二维纹理里指定位置的像素值

怎么没有人指点一下小弟啊?

3

主题

95

帖子

107

积分

注册会员

Rank: 2

积分
107
发表于 2004-11-3 13:48:00 | 显示全部楼层

Re:都有什么函数可以用来把二维纹理里指定位置的像素值

就只有tex2d啊,你这样使用就是正确的。
至于为什么你的效果不正确,我想更多的是应该检查一下例如:纹理设置是否正确了?纹理寻址模式是什么?如果不是WRAP或MIRROR,那你就得看看UV是不是在[0,1]的范围内,否则效果就得跟着特定的寻址方式走了。
还有一点,tex2D采样出来的颜色值不是整数值,你这问题我记得之前就回答过你。R、G、B、A这四个值是浮点数的,采被Clamp在[0,1]的范围内。

13

主题

61

帖子

61

积分

注册会员

Rank: 2

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

Re:都有什么函数可以用来把二维纹理里指定位置的像素值

我的这张纹理不是用做纹理贴图的,只是用来存放数据,所以没有纹理寻址模式。存进去的是正整数,想把原值去出来,大小一样,但类型变为浮点数也可以。

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-11-3 15:08:00 | 显示全部楼层

Re:都有什么函数可以用来把二维纹理里指定位置的像素值

我好象记得纹理查表要把
数跟2的N次那个怎么一下的

13

主题

61

帖子

61

积分

注册会员

Rank: 2

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

Re:都有什么函数可以用来把二维纹理里指定位置的像素值

有可能,具体怎么弄知道吗?
知道的话请指点一下,谢了!

63

主题

871

帖子

891

积分

高级会员

Rank: 4

积分
891
QQ
发表于 2004-11-4 11:11:00 | 显示全部楼层

Re: 都有什么函数可以用来把二维纹理里指定位置的像素值

浮点数(0--1之间的数)查表是先将其乘以2的N次方转换成0-255之间的数
在显卡里颜色应该都是0--1的

读出的纹理值是采样插值后的
所以最好在建表的时候把一个数值的颜色涂成一个大一点的范围,,防止那个

不知道我说的对不对
[em7] [em23]

13

主题

61

帖子

61

积分

注册会员

Rank: 2

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

Re:都有什么函数可以用来把二维纹理里指定位置的像素值

呵呵,果然象你说的那样。我把纹理放大了一下,就好了。
多谢了啊!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-23 07:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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