游戏开发论坛

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

HLSL纹理采样器问题!

[复制链接]

8

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2008-7-21 20:45:00 | 显示全部楼层 |阅读模式
看到代码中定义为:
sampler MeshTextureSampler:s0;

然后就直接使用:
//混合顶点光照颜色和纹理颜色
    vColorOut = vColorIn * tex2D( MeshTextureSampler, vTexCoord );

我想问纹理采样器s0是什么意思?是默认采样吗?默认采样配置是什么?

还有当单个网格有多张贴图的时候,怎么设置采样器啊?
谢谢,各位大哥!Orz

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-7-21 22:37:00 | 显示全部楼层

Re:HLSL纹理采样器问题!

sx是采样寄存器,x = [0,n]
在directx9里,采样器和纹理是耦合在一起的,sx位置的采样器只能对tx寄存器中的纹理采样(s0--t0,s1--t1)

有很多种方法可以设置采样器,固定管线的风格的写法,显式设置寄存器
dx:
IDirect3DDevice9::SetTexture(0,diffuseTexture) //diffuseTexture被加载到t0中,并和s0绑定
IDirect3DDevice9::SetTexture(1,normalTexture)
hlsl:
smapler diffuseSpl:s0;
sampler normalSpl:s1;
diffuseColor = tex2D(diffuseSpl,texCoord);
normal = tex2D(normalSpl,texCoord);

effect风格的写法:
dx
effect.SetTexture(diffuseTexHandle,diffuseTexture);
effect.SetTexture(normalTexHandle,normalTexture);
hlsl:
texture diffusetTexture;
texture normalTexture;
sampler2D diffuseSpl = sampler_state{texture = <diffuseTexture>;}; \\绑定纹理和采样器
sampler2D normalSpl= sampler_state{texture = <normalTexture>;};
diffuseColor = tex2D(diffuseSpl,texCoord);
.....







8

主题

15

帖子

15

积分

新手上路

Rank: 1

积分
15
 楼主| 发表于 2008-7-21 23:50:00 | 显示全部楼层

Re:HLSL纹理采样器问题!

谢谢!

0

主题

37

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2008-7-22 22:35:00 | 显示全部楼层

Re:HLSL纹理采样器问题!

学习了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 22:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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