游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5724|回复: 6

D3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

[复制链接]

9

主题

39

帖子

43

积分

注册会员

Rank: 2

积分
43
发表于 2008-8-21 12:39:00 | 显示全部楼层 |阅读模式
再请教一个问题:我在一个Client区域是600x480的窗口上,贴一张同样是600x480的图片,但是图片却呈现模糊状(不是很明显,但图片上的文字变模糊了,所以能看出来)!?

贴图的方法是通过CreateVertexBuffer创建类型为(D3DFVF_XYZRHW|D3DFVF_TEX1)的矩型顶点缓冲区,然后SetTexture进行贴图。(这种模糊感并不同于颜色变亮或变暗这类被光照影响所造成的颜色差异)

请问,有没有什么其他的贴图方法,可以保证图片不失真呢?

59

主题

984

帖子

1200

积分

金牌会员

Rank: 6Rank: 6

积分
1200
发表于 2008-8-21 12:53:00 | 显示全部楼层

Re:D3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

纹理坐标做0.5像素的位移
texCoord += 0.5 / screenParam;

9

主题

39

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2008-8-21 13:50:00 | 显示全部楼层

Re: Re:D3D背景贴图,窗口大小与图片大小相同,却呈现模糊

clayman: Re3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

纹理坐标做0.5像素的位移
texCoord += 0.5 / screenParam;


厉害,一语中的!

X轴我减了0.5,X轴方向就不模糊了。但是Y轴减0.5还是不行,试了一下按比例减也是不行,我按比例减的公式是这样的:-0.5 * height / width。

有不对的地方,请指点一下,谢谢!

9

主题

39

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2008-8-21 13:56:00 | 显示全部楼层

Re:D3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

呃,我刚才好像理解错了,我移动的是顶点坐标……

不过还是要问一下,纹理坐标调哪个函数移动?似乎只有SetTexture设置纹理……

9

主题

39

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2008-8-21 14:08:00 | 显示全部楼层

Re:D3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

我知道说的是哪个了?,是不是指这个?
顶点类型是D3DFVF_XYZRHW|D3DFVF_TEX1,
typedef struct VERTEX
{
        float x, y, z;  // 2D coordinates
        float rhw;      // rhw
        float u, v;     // texture coordinates
} VERTEX;
创建代码是这个:
float x = -0.5f/width, y = -0.5f/height;
VERTEX verts[] = {
{  0.0f, 0, 1.0f, 1.0f, x, y },
{ width, 0, 1.0f, 1.0f, 1.0f + x, y },
{  0.0f, height, 1.0f, 1.0f, x, 1.0f + y },
{ width, height, 1.0f, 1.0f, 1.0f + x, 1.0f + y}
}
X轴是正常了,Y轴还是模糊啊

9

主题

39

帖子

43

积分

注册会员

Rank: 2

积分
43
 楼主| 发表于 2008-8-21 15:27:00 | 显示全部楼层

Re:D3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

终于明白了,看了这帖http://topic.csdn.net/t/20040621/09/3108799.html的14楼,试了一下把原图弄到1024x1024,然后修改顶点纹理的对应最大值,就算不加0.5也不会模糊了。当然不加的话,坐标偏移还是有点不对,加上就完全正常了,前面用减是我搞错了。
谢谢了!

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-8-22 17:56:00 | 显示全部楼层

Re:D3D背景贴图,窗口大小与图片大小相同,却呈现模糊状?

我以前发现这和显卡有关,比如在我的显卡上没问题的,换了显卡之后,从图案规则的画面上看出来,有1个像素的误差。估计是显卡驱动编写的时候对 +1, -1 这样的计算的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 14:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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