游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2143|回复: 5

请教关于HLSL像素渲染的问题

[复制链接]

83

主题

169

帖子

202

积分

中级会员

Rank: 3Rank: 3

积分
202
发表于 2008-10-11 23:44:00 | 显示全部楼层 |阅读模式
我手中有一本教材中写了一段像素渲染代码如下

//-----------
//纹理采样器
//-----------
sampler s_2D = sampler_state
{
    minfilter = LINEAR;
    maxfilter = LINEAR;
}
//-----------
//输入、输出结构体
//-----------
struct PS_INPUT
{
    float2 tex : TEXCOORD0;
};

struct PS_OUTPUT
{
    float4 Color : COLOR;
};
//------------
//像素渲染主函数
//------------
PS_OUTPUT PS(PS_INPUT psInput)
{
    PS_OUTPUT Out_ps = (PS_OUTPUT) 0;
    Out_ps.Color = tex2D(s_2D,psInput.tex);
    return Out_ps
}

然后再象以下方法设置一张纹理
D3DXCreateTextureFromFile(pd3dDevice,L"texture.jpg",&g_pTexture);
pd3dDevice->SetTexture(0,g_pTeture);
然后把这张纹理贴在了一个圆筒的表面(如图)。

但是我想知道的是不仅仅像这样直接把这张图贴在上面,而是想更改纹理上的某一部分的颜色后再贴上去。
比如这张纹理由600*600的大小,但是我就想把纹理上的(200,500)这个点改为红色,要怎样才能在像素着色器中定位到这个点?

谢谢!
sf_20081011234338.jpg

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-10-12 08:49:00 | 显示全部楼层

Re:请教关于HLSL像素渲染的问题

通过纹理坐标判断

53

主题

98

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2008-10-13 09:18:00 | 显示全部楼层

TO qrli

不知道用纹理坐标计算出来的位置是不是准确,我的计算是这样的,假设纹理的宽为W,高为H,那么位图中位置为(x,y)的点对应纹理中的点是不是这样的(1.0f/W,1.0f/H)

5

主题

686

帖子

697

积分

高级会员

Rank: 4

积分
697
QQ
发表于 2008-10-13 19:46:00 | 显示全部楼层

Re:请教关于HLSL像素渲染的问题

尽量不要用Texture坐标来判断,这个坐标值太小了,你应该将纹理坐标变换回Texel坐标,先加半个tap,再乘w和h就可以了,然后和xy做比较

53

主题

98

帖子

101

积分

注册会员

Rank: 2

积分
101
发表于 2008-10-16 16:35:00 | 显示全部楼层

TO jk20012001

请问如何将纹理坐标转换成Texel坐标?加半个tap又是加多少?

8

主题

67

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2008-10-17 17:46:00 | 显示全部楼层

Re:请教关于HLSL像素渲染的问题

没必要用shader做这么奇怪的事情...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 02:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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