?关于OpenGL消除锯齿的2个问题 ???十分感谢!

Gold2000 2006-08-23 11:44:00
1、我利用“抖动的方法”消除场景中的锯齿,然后放在不同的硬件环境下做了2个实验:
(说明一下:“抖动的方法”也即是“累积缓存”)
1.1、我在 “CRT的显视器” 上显视场景,的确可以消除锯齿(效果很好);
1.2、但是,在我的另一个“飞利浦液晶显视器”上,锯齿依然存在
(感觉上似乎根本就没有抖动)

这是什么原因?有没有人碰到过


2、我的场景一般都由100多个长方形组成,利用“抖动的方法”消除场景中的锯齿,
使得我渲染速度很慢,在手动旋转场景时特别明显,
(即使关闭纹理贴图的情况下也好不了多少,我的抖动数组长度一般是3至5)
采用“融合”的方式消除锯齿,的确会在速度上提高很多,但是,由于我的
场景中,部分物体根本就不是透明的,我还需要利用颜色深度缓存有效的实现遮蔽。

同志们,能不能谈谈你的“消除锯齿”的方法和经验??? 十分感谢!
...全文
660 12 打赏 收藏 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gold2000 2006-10-10
  • 打赏
  • 举报
回复
抱歉,最近老出差,未能揭帖!


关于这个问题,还是有疑虑,我改天做个小程序,
再发给 Analyst() 、krh2001(边城浪子)、syy64(太平洋),请你们看看、比较比较。


谢谢大家!
xuchunhui_518 2006-08-24
  • 打赏
  • 举报
回复
学习中……
帮顶
Analyst 2006-08-24
  • 打赏
  • 举报
回复
理解错误。是用更大尺寸的rendertarget,在世界空间里缩放是没有意义的。显卡设置里面有一项antialias设置,选4x就可以获得很好的效果了。如果你想自己做的话,可以创建一张比原rendertarget大4倍的pbuffer,把他设为新的rendertarget,然后再把pbuffer渲染到屏幕上。
Gold2000 2006-08-24
  • 打赏
  • 举报
回复

Analyst()

我做了2个试验,结果和我的预测是一致的(都没有反走样的效果)

a、保持视口不变,正射投影的视景体大小也不变,我把物体的物理坐标
都放大 10倍,然后利用glScalef(0.1,0.1,0.1)缩小,
结果没有反走样效果;


b、保持视口不变,正射投影的视景体大小 和 物体的物理坐标
都放大 10倍,(不缩放)直接投影到视口,
结果也没有反走样效果。


是不是我对你的 说法的理解 出现了偏差?
如果理解没错,其实,这种办法细想一下,可以判断出来是行不通的
Gold2000 2006-08-24
  • 打赏
  • 举报
回复

krh2001(边城浪子)

你的 大部分说法我都非常赞成,但是,我并不人为“方点”和“圆点”
有什么区别,我认为“反走样”的最根本的手段就是:
淡化尖锐突出的轮廓(或者说像素),(浅色)填充一些凹进去的像素;
所以,只要分辨率足够大,不管“方点”或者“圆点”,都应该能够达到
一定的“反走样”效果。
jerry 2006-08-24
  • 打赏
  • 举报
回复
我在液晶显示器的电脑运行了一个国外公司做的软件,
他的场景 能消除锯齿(至少比我的效果好得非常多),
--------------------------------------------------------

如果这样的话,说明你的程序还有提高的空间啊. 继续努力
Gold2000 2006-08-24
  • 打赏
  • 举报
回复
谢谢大家!

1、krh2001(边城浪子)
我在液晶显示器的电脑运行了一个国外公司做的软件,
他的场景 能消除锯齿(至少比我的效果好得非常多),
你能估计他是采用什么方法做的吗?
《等会我也常识一下用融合的方法在 液晶显示器中 消除锯齿》

2、Analyst()
我还太清楚你的“超采样”是什么意思:
是不是我保持视口大小不变,然后正射投影下的视景体和
物体的物理坐标按一定比例 “增大”,这样便自动达到
消除锯齿的效果? 还是你有其他的意思?

3、syy64(太平洋)
这个概念应该是: 反走样 = 消除锯齿,
抖动和融合是达到他们2者的 方法。
ss19830716 2006-08-23
  • 打赏
  • 举报
回复
路过帮你顶下
syy64 2006-08-23
  • 打赏
  • 举报
回复
你说得抖动是反走样吗?
OPenGL一般用反走样来消除锯齿。
Analyst 2006-08-23
  • 打赏
  • 举报
回复
一般都是用超采样来消除锯齿,简单的说就是渲染一张比原来大N倍的缓冲然后再缩小显示。这个硬件自动支持的,一般不需要自己做,当然自己做也是可以的。
Elysium 2006-08-23
  • 打赏
  • 举报
回复
up
jerry 2006-08-23
  • 打赏
  • 举报
回复
液晶显视器 就是这样的啦,因为它的像素都是方的,棱角很突出,所以看起来。虽然物体边缘进行了色抖动,但显示的时候,总是一个方块的颜色。 这在CRT显示器上就不存在了,因为它的像素(屏幕像素)会比扫描像素多得多。而电子束在扫描屏幕的时候是以圆点的形式(不可能产生方的电子束)。这样综合起来的效果就是CRT显示的图像要平滑很多。这也是为什么做图像方面的人不用LCD的原因之一。另一个原因是LCD得不到象CRT那样丰富而艳丽的色彩。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧