我用一张800*600的BMP图片作为纹理贴到800*600分辨率的全屏屏幕上,但是图像出现了一定的模糊,不能保持和原图一致,但是在DDRAW下则可以保持和原图一致,请问高手这是为什么呀?
  • 高质量的3D LIC矢量纹理生成算法
发表于: 2004-06-21 09:28:57 楼主

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

回复次数:20

CSDN推荐
  • DA转换器原理及其在波形产生方面的应用
  • swing-worker-1.1.jar
  • Directx11教程九之多重纹理和纹理数组
  • 图像几何校正
  • 渐进纹理示例
  • 马航MH370客机失联真相终于揭晓了!震惊世界!!
  • 第四部分 电 子 电 路 仿 真 实 验
  • 调用相机相册处理失真
XCOOL 
可能原因
(1)D3D在进行纹理贴图时候会进行纹理过滤。虽然你用一个2个多边形组成屏幕一样大矩形,且刚好投影覆盖整个屏幕,但是由于你的过滤方式设置为不是最近点取样的方式,那么在对多边形进行充填时候会发生在原位置采样不到原有象素的情况,导致模糊。或者你使用了MIP贴图,会在2层贴土间做线性混合。等价于图象中的模糊酸法,因为下一层贴图为上一层贴图长宽都缩放一倍的效果,下一层一个像素为上一层4个像素的平均。而纹理过滤后原来像素同这个平均值进行了加权平均。
(2)打开了全屏幕反锯齿功能,回实现相当于图象处理的平滑效果
(3)由于变换损失了纹理坐标位精度,或者纹理的像素模式不同于原图象。
(4)执行了多级纹理混合,导致了纹理同点的着色信息混合。
可能还有别的可能,这需要你去实验一下了。
  • DirectX (9) 纹理映射
回复于: 2004-06-21 12:05:20#1 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

chena224503 
Texels to Screen Space, Mapping
在sdk里看看这个。
  • DX9窗口模式下的截图
回复于: 2004-06-22 13:56:04#2 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

hugo514 
哈哈,终于等到有人回答了,根据你的分析加上我的判断,应该是第二点,
因为第一三四点我都已经关闭了,但是我就是不知道怎么关闭全屏抗锯齿功能呀,能不能说说怎么关闭呀!
  • D3D中的纹理贴图(1)
回复于: 2004-06-22 14:18:59#3 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
那就简单了,直接设置显示属性,改平滑处理为人工方式中的关闭平滑处理。在代码中全屏幕反锯齿可能出现在2个地方。一个就是在CreateDeivce的时候,设置第5个参数指向的结构中的pPresentationParameters->MultiSampleType=D3DMULTISAMPLE_NONE可创建禁止反锯齿的设备。或者你调用了SetRenderState(D3DRS_MULTISAMPLEANTIALIAS,xxxx)你可以去掉程序中该行。但是通常来讲,你自己反了锯齿并且没有发现的话,那么应该是第一种情况,也就是创建设备的时候就已经反锯齿了!
  • 通过ID3DXSprite在DirectX9简单实现2D绘图
回复于: 2004-06-22 16:48:18#4 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

hugo514 
不好意思呀,我突然发现我在创建设备的时候设定的格式为
BackBufferFormat = D3DFMT_A8R8G8B8,但是当我把它改成D3DFMT_R8G8B8格式后,却出现创建设备错误,请问还有哪些地方要改吗?或者是我的显卡不支持,我是GFMX440的显卡.
  • 什么是饱和失真?什么是截止失真?
回复于: 2004-06-23 09:19:36#5 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
应该是你的显卡不支持,我没有用过MX440的显示卡.
  • 关于java的double类型数据运算精度失真
回复于: 2004-06-23 16:16:43#6 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

大魔头 
哎!竟然不懂得人也可以说几句?出现了一定的模糊是因为纹理的高和宽必须是2的次幂,比如2 4 8 16 32 64 128 256 512 1024,将图片高和宽改成2的次幂就行了,多去找这方面的书刊看
  • 失真类型简介
回复于: 2004-06-24 15:34:25#7 得分:10

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

mybios 
我把800×600的图像在Photoshop里拉伸成1024×1024后,在载入到800×600矩形中速度比原来的图像载入速度快了几倍啊!!!这是什么原理?图片大了反而速度更快。。
  • 交越失真及产生原因和改善方法
回复于: 2004-06-24 21:32:00#8 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
KingofMagic:你说的是浮点数约减的问题吧,看看我上面说的第3点吧,纹理变换导致的精度约减。
但就这一点来说:用最近点采样,不过我认为,即使是1024*768的纹理,放在1024*768的屏幕大的矩形上,由于大小相近,应该也不会出现严重的模糊的情况,所以我才没有提这点。你无非是认为乘1024,浮点数Exp部分加10.而乘768会出现浮点数基数部分有比较大的变化,导致采样位置不准,会损失精度。对不?但是别忘了,插值出来的纹理坐标是根据,两顶点投影到屏幕的像素宽度来决定的。在上面这种情况下,768早就做了除数了。
当纹理图片同面片大小相同,而768小于1024,就精度来看,误采样的概率是很小的。通常出现采样不准的情况只有在纹理比图片大或纹理比图片小的情况下才会出现在,这种情况出现的问题不是纹理模糊,而是某些像素处的纹理会出现突变!所以,我一开始就排除了这种可能。要不你回去试验一下,不要以为世界上就你懂!
  • Unity 带 Alpha 图片手机包失真
回复于: 2004-06-25 11:40:27#9 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
请教一下:纹理必须为2的n次幂是不是所有的情况都适用?设想一个面片投影到屏幕上为4*3个相素,原图片也为4*3个,你拉伸到4*4的图片去做纹理,用什么样的算法去放大图片呢?如何保证同原图的一致?(如何配合图片的拉伸算法和纹理过滤的算法)?
  • 多纹理显示
回复于: 2004-06-25 12:02:58#10 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

tengulre 
 
我想是你的显卡不支持。
  • 仿造hge的2d游戏引擎
回复于: 2004-06-25 14:26:31#11 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
to:Mybios(俊俊哥哥)
因为高宽为2的n次方这种纹理,在做纹理映射时候需要做浮点运算,而一个浮点数乘以2的n次方时候和非2的n次方时候将采用不同的指令,一个只做exp部分的加法运算,一个需要乘法运算。当然快慢不一了。不过我比较好奇的是你是怎样测试出来快慢的不同的。因为给我的感觉在好的显卡上面这个效应应该不明显?
  • dx9纹理子调用
回复于: 2004-06-25 15:09:00#12 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
下面引自 〈Real-time Rendering Tricks and Techniques in DirectX〉
Width,Height,and the Power of Two
Most graphics cards and implementations restrict texture dimensions to powers of two,This means that textures are restricted to sizes such as 1*1,16*16,128*128,and so on,Note that this dose not mean that they need to square.Sizes such as 128*16 are also legal.There are a couple of reasons for this restriction,but the biggest reason is that dimensions which are powers of two are easier for the decice to manipulate quichly.In future versions which are powers of two are easier for the device to manipulate quickly.In future versions of hardware,this requirement might be relaxed,but for the foreseeable future,you should expect that the hardware will require textures to have dimensions with powers of two.
  • dx9纹理位图寻址
回复于: 2004-06-25 15:29:12#13 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
完全明白了,如果你的显示卡要求D3DPTEXTURECAPS_POW2,那么你必须用2的n次方大小的纹理,而你用的是D3DX中的函数装入纹理,那么在装如纹理的时候已经把你的纹理拉伸成了1024*1024,但是在拉伸过程中由于进行像素插值产生了模糊。所以最接近原来屏幕的方法是将图象大小改为1024*1024但是不进行原来图片的缩放,多出的部分填充为原图片边界颜色,而同屏幕一样大小的2个三角形右下角顶点纹理坐标改为u=800.0/1024.0 v=600.0/1024.0。(注意用最近点采样还是一样会出现三角形交界处的不一致,但是如果用线形插值采样那么很多地方不会是原来的颜色而是经过平滑处理了的,还是同原来的图像不同,头痛死!)
  • 视觉感知特性【2】一些视觉感知因子
回复于: 2004-06-25 16:26:41#14 得分:10

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

只缺烦恼 
up
  • DirextX9之2D编程 通过16位色位图创建背景透明的纹理
回复于: 2004-06-25 16:46:57#15 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
to:Mybios
你感觉到装如纹理更快不可能是因为显卡在计算乘法时候乘以2^n比非2^n的时候乘法更快的问题,因为这在简单场景中根本感觉不出来,而且很少有显示卡支持非POW2纹理的。所以你真正做纹理的不论你是用的800*600的图片还是1024*1024的图片最终在纹理中还是1024*1024的大小,快的原因是1024*1024的图片装入时候不会进行插值拉伸的操作而800*600的在D3DXCreateTextureFromFile或D3DXCreateTextureFromFileEx函数中会执行拉伸的操作。所以快慢应该在这里出现的。
  • DirectX 9.0c游戏开发手记之RPG编程自学日志之12: Drawing with DirectX Graphics (用DirectX图形绘图)(第5节)
回复于: 2004-06-25 16:49:15#16 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

hugo514 
哇,都是高手呀,说的这些东西看得我头都晕了,回去研究ing!
  • dx9 alpha混合纹理
回复于: 2004-06-25 17:01:38#17 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

XCOOL 
KingofMagic(大魔头) :得向你好好学习呀,作了3年的绘图系统,居然还不知道有DirectX会自动的将纹理转化为Power of Two的大小。遗憾的是没有D3DXCreateTextureFromFile的原代码,所以不知道如何对他Scale后的纹理在采样的时候进行矫正回来。我想出两种方法
(1)用了一个高斯采样函数模版进行(四角效果不好)。
(2)快速付里叶变换然后反变换(效果好,但是速度慢)。
但不知到具体的。
谁知道或有源码呀?
  • D3D 纹理寻址模式
回复于: 2004-06-25 17:37:38#18 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

hugo514 
强呀,果然是会自动拉伸到Power of Two的大小的,我碰到的问题还有一个就是当我使用D3DX_FILTER_NONE来不使用过滤的时候,原来800*600的图片就不能在800*600分辨率的屏上完全显示出来,现在想想,原来是自动拉伸到1024*1024了,所以无法全部显示出来了,一直都想不通这个问题,这次一下就解决了,哈哈,多谢各位高手!
  • <DX9随笔>一.顶点色 光照 纹理
回复于: 2004-06-26 09:28:12#19 得分:0

对我有用[0] | 丢个板砖[0] | 引用 | 举报 | 管理

hugo514 
问题总算解决了,再次多谢两位高手!

D3D9 3D渲染图像变模糊相关推荐

  1. 你的3D渲染图像看起很假?检查一下是否有这个5个原因

    如果您不遵循一些基本原则,世界上所有的技术都无法帮助您获得逼真的图像.虽然 3D 软件在照片级真实感领域取得了巨大进步,但最多只能让您达到百分之八十.剩下的百分之二十是看起来"有点" ...

  2. keyshot材质中文目录_KeyShot10 Pro for Ma 苹果3D渲染动画制作软件 中文版下载

    版 本: 10.0.198 语 言: 中文 英文 其他 大 小: 1.17 GB 系 统: macOS 10.14 或更高版本 KeyShot 10 Pro for mac是一款基于mac平台开发的的 ...

  3. 小程序 mathjs渲染公式_Mac 3D渲染和动画制作----KeyShot 9 Pro

    KeyShot 9 Pro for Mac是应用在Mac上的一款3D渲染和动画制作软件,keyshot是您快速创建精彩视觉效果所需的一切.在实时3D渲染工作流程显示结果即时,缩短了创建逼真的产品拍摄的 ...

  4. 用深度学习完成3D渲染任务的蹿红

    大纲 用深度学习完成3D渲染任务的蹿红 研究背景和研究意义 基于传统多视图几何的三维重建算法 相机标定以及坐标转换 主动式--结构光法 主动式--TOF激光飞行时间&三角测距法 被动式--SF ...

  5. 如何更快地渲染?深入了解3D渲染性能的指南!(5)

    上文<如何更快地渲染?深入了解3D渲染性能的指南!(4)>我们介绍了从场景内部灯光.用料.反射.材质等方面的优化,提升场景渲染的速度.本文Renderbus云渲染农场将继续从渲染设置.全局 ...

  6. 如何更快地渲染?深入了解3D渲染性能的指南!(4)

    上文<如何更快地渲染?深入了解3D渲染性能的指南!(3)>中,我们介绍了如何快速渲染中对场景中多边形数量的优化,从而加速场景的渲染速度.本文Renderbus云渲染农场将继续带您从场景内部 ...

  7. 盘点好用的3D渲染软件,哪个更适合你?

    3D 渲染软件可以帮助建筑师和设计专业人士通过逼真的图像或视频将他们的 3D 模型变为现实,相信许多刚刚接触渲染行业的小伙伴都会有一个疑问,那就是五花八门的各色渲染软件,我究竟用哪个比较好?其实,选择 ...

  8. 如何从失焦的图像中恢复景深并将图像变清晰?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 到目前为止,我已经介绍了两种用于将模糊的图像变清晰的技术,它们分别是: 去卷积:怎么把模糊的图像变清晰 ...

  9. 2021 年最佳 3D 渲染 GPU

    高质量的视觉图形对于媒体.电影.平面设计.动画.空间研究.建筑.室内设计等行业至关重要.所有这些行业都依赖于渲染过程来获得各种专业项目的所有结果.过去几年,GPU渲染技术如风暴般席卷IT行业.虽然 G ...

  10. KeyShot 11 Pro for Mac(3D渲染和动画制作) V11.3.2.2中文安装+更新内容

    keyshot11 pro for mac最新版已经全面升级,功能强大,操作好用,并且实现简体中文界面.keyshot 11是一款基于mac平台开发的的3D渲染工具,是非常强大的光线追踪与全域光渲染软 ...

最新文章

  1. leetcode9 Palindrome Number 回数
  2. 中科大量子计算机重大突破,中国科大在量子计算研究中获重大突破
  3. Oracle数据库比较日期时间的大小
  4. java B2B2C源码电子商务平台 -SpringCloud配置中心高可用搭建
  5. 为什么要使用React Hooks?(5分钟实例)
  6. A+B Problem(V)
  7. ansible管理mysql安装初始化_[ansible]-ansible初始化mysql数据库
  8. Codevs 1205 单词反转(Vector以及如何输出string)
  9. html中不支持什么元素,html5新元素和html不支持的元素
  10. 【企业微信点餐系统】
  11. 计算机应用基础上机实验报告怎么写,excel实验报告模板
  12. VS2017社区版许可证过期问题
  13. VMWARE 之 分布式网络交换机
  14. 程序员怎样出版一本技术书
  15. 【GitHub】中SSH key的配置
  16. 局域网服务器怎么更改账号,怎么修改访问局域网共享用户名和密码
  17. 论文阅读:Push the Limit of Acoustic Gesture Recognition
  18. 如何提高自己的语言表达能力?
  19. Socket通信客户端报错Connection reset
  20. 2022年计算机软件水平考试信息系统监理师(中级)练习题及答案

热门文章

  1. STM32+ESP8266单片机嵌入式物联网教程
  2. Markdown_常用语法总结
  3. mac登陆远程服务器
  4. 360路由器外网映射
  5. 一文通俗入门·脉冲神经网络(SNN)·第三代神经网络
  6. Android中关于涉及到金钱计算方面的工具类!
  7. 航海家软件公式全破解
  8. python type help copyright_python中help信息
  9. HtmlHelp调用chm帮助文档使用
  10. ubuntu安装中文拼音输入法,装系统的第一步