导航:首页 > 源码编译 > 反锯齿曲线源码

反锯齿曲线源码

发布时间:2023-04-27 19:11:24

① 开发者中的“4倍抗锯齿”对游戏有没有用用手机测一测就知道了

前不久,知名数码博主“差评”发表了一篇科普类文章《安卓手机用了这么久,你竟然不知道开发者选项这个性能怪兽》,文中提到,如果我们在开发者模式中强制开启4倍抗锯齿,并且始终使用GPU来处理图像画面,在一定程度上可以改善手游的画质,让 游戏 运行变得更加流畅。

对于此观点,笔者只能说在理论上认同,毕竟按照字面理解,这两个选项的意思就是将手机的图形处理工作全部丢给GPU,属于手动“超频”。但是,理论归理论,实践才是检验真理的唯一标准,能不能更流畅不是理论说了算,因此头铁的笔者进行了两轮测试。

测试方法:用侍缺笔者自用的两部手机荣耀30Pro+、小米Note 3各玩两局《和平精英》,其中一局 游戏 开启“强制启用4×MSAA”、“停用HW叠加层”两个选项,另一局 游戏 关闭这两个选项,两局 游戏 之间有一定的时间间隔,保证手机芯片有足够的“冷静期”。通过PerfDog这个软件,对比两部手机在开启和关闭之后的差异,得出相关结论。

荣耀30Pro+测试

荣耀30Pro+是笔者现在所使用的手机,整体性能比较均匀,其中处理器麒麟990 5G是目前海思自主研发的最好芯片,整个芯片市场都属于第一梯队,用荣耀30Pro+玩很多 游戏 都有满帧或者接近满帧的表现。因此选用此手机测试,是想看看开发者模式能否让手机 游戏 体验更上一层楼。

因为很多朋友都没有启动过开发者模态衡式,所以给大家做一个简短的指引。打开设置中的“关于手机”界面(有的手机品牌是“全部参数”界面,反正大体方向都是打开系统的参数界面),连续点击“版本号”这一栏(有的手机品牌是“XX版本”栏),点击了一定次数后(一般是5次,有的是7次),就会进入开发者模式。

启动开发者模式之后,就可以打开“开发人员选项”(一般都在设置中的“系统和更新”这一栏中打开,也有部分机型是独立成项的),“强制启用4×MSAA”、“停用HW叠加层”都在硬件这一栏。

考虑到荣耀30Pro+的《和平精英》的90帧模式仅开放了流畅画质,渲染不够强烈,因此我们采用了极限帧数模式(也就是60帧模式),画质选用当前已开放的最高画质“HDR高清”。

两局 游戏 ,一局花了22分钟,一局花了20分钟,时间不一样长,为了对比方便,我们选择用相同时间趋势进行对比。

帧数方面,两次测试的帧率曲线犬牙交错,总体上都在59—61帧这个区间活动,不开启“4倍抗锯齿”相关设置时的平均帧率有59.7帧,开启“4倍抗锯齿”相关设置的平均帧率有59.6帧。因为曲线线条相近,所以看不出谁流畅。(注:平均帧率越高,只能代表单位时间内画幅越多,画面的动态细节越丰富,但不能作为评判 游戏 流畅与否的标准)

单帧耗时代表每一帧画面出现的时间,若单帧耗时是均匀的,则表示每一帧出现的时间长短是一致的,这就代表 游戏 加载是均匀渲染,属于流畅运行。因此单帧耗时曲线是衡量 游戏 是否流畅运行的重要指标。

上图中,两次测试的单帧耗时整体都在15—34毫秒这个通道,超出这个通道的线条,则代表那一帧的单帧加载时间超过了平常,某种层次上也算是一次卡顿。通过简单对比,可以发现不开启“4倍抗锯齿”相关设置的曲线(绿色)有更多的次数超过了34毫秒,某种程度上代表卡顿更多。

因此,开启了“强制启用4×MSAA”、“停用HW叠加层”后,一定程度上会让手机在 游戏 时更流畅。

另外,在开启了“4倍抗锯齿”的相关设置后,手机芯片温度明帆谈做显更高,其温度曲线整体在不开启相关设置的温度曲线之上。这一点,“差评”这位数码博主的在TA的那一篇文章也有所描述,实测和TA文章描述相符。

小米Note 3测试

考虑到荣耀30Pro+是今年的顶级旗舰,运行很多 游戏 本身不太费力,所以笔者又将自己自用的前代手机小米Note 3纳入测试范围。它所采用的处理器是曾经的神U骁龙660,刚买这部手机的那一年 游戏 体验也非常棒,但随着 游戏 版本的更迭,现在打 游戏 已经有点吃力了。

小米Note 3开启开发者模式的相关流程和荣耀30Pro+的流程类似,因为前文已经做了说明,所以这里就不做过多的阐述。

画质方面,选择小米Note 3已开放的最高画质“高清”,帧数设置选择最高的“高”(也就是30帧模式)。

两局 游戏 ,一局花了12分钟,一局花了18分钟,同样的,为了方便比较,我们选择用相同时间趋势进行对比。

通过数据对比,发现小米Note 3在开启了“强制启用4×MSAA”、“停用HW叠加层”后, 游戏 状况反而更糟糕。

首先是帧率,小米Note 3在开启“4倍抗锯齿”之后,帧率曲线波动非常大,如过山车,平均帧率比不开启相关设置低了两帧,这代表 游戏 加载过程中少了很多动态细节。

其次是单帧耗时,小米Note 3在开启“4倍抗锯齿”时的单帧耗时曲线(紫色),纵坐标值参差不齐,没有一个稳定的通道,且图像区域普遍在不开启相关设置时的单帧耗时曲线(绿色)的上方。这代表小米Note 3在开启“4倍抗锯齿”后玩 游戏 是非均匀渲染的,流畅性极差。

最后是温度,芯片温度曲线已经说明一切了,小米Note 3在开启“4倍抗锯齿”后芯片发热明显更严重。

总结

通过新旧两部手机的两轮测试,我们可以得到以下结论:

一、开发者模式中的“强制启用4×MSAA”、“停用HW叠加层”两个选项,一定程度上可以让 游戏 运行变得更加流畅,但改善画质真的不能体现,因为开启与否平均帧率都非常相近,这代表单位时间内加载的画幅数量是相近的,所以看不出画质有本质的提升;

二、旗舰手机在芯片性能溢出的前提下,可以选择开启这两个选项提高 游戏 的流畅度,但付出的代价是温度,手机明显会更烫;

三、非旗舰手机、旧手机不建议这样折腾,因为芯片算力本身就吃紧,渲染任务全推给GPU后, 游戏 运行不光更卡,机身也更烫, 游戏 体验非常糟糕。

② Pixel Art Tutorial 像素画教程

这篇教程是我在2007年于个人网站上创作的。从那之后有一些细微的调整,但没有重大的更改。

在这10个步骤下,我将教你如何去创造一个“sprite(精灵)”,它是一个独立的角色或者说是对象(object)。当然,这个术语来源扰悄于电子游戏。

创派枝造像素画是一种技能,我去学习它是因为我的游戏需要它。经过一些尝试之后,我变得得心应手,开始把它当作真正的艺术。如今,像素艺术在游戏开发以及插图中非常流行。

这个像素画是我几年前创作的,用来教学像素画的基本概念,我已经进行了大量的精简。还有一些像素的教程,我觉得它们太复杂太啰嗦。像素艺术不是一种科学,你没必要在创作的时候去计算矢量。

像素画的好处之一就是你不需要任何花哨的工具,使用你电脑自带的画图工具就已经足够了!据说有专门为像素画制作的工具,比如 Pro Motion,对于Mac用户来说 Pixen。虽然我没尝试过它们,但听说它们很棒。在本教程中,我将使用Photoshop,它很昂贵,但是它能应付各种艺术创作,同样它有许多非常有用的功能用来创作像素画。

在使用PS的时候,你的主要工具是铅笔工具(pencil tool)快捷键 "B",画笔工具(brush tool)是你的备用工具。铅笔工具可以让你画出纯粹的像素点,不会反锯齿(anti-aliasing)。

另外两种工具是选框工具(marquee tool)快捷键 “M”,以及魔法棒(快捷键 “W”),选择、拖动、复制和粘贴。记住选择时按住 “Shift” 或 “Alt” 可以切换新增或减去选区。当你试图获取不规则的选区时,这很方便。

你同样可以使用吸管工具(eyedropper)快捷键 “I” ,来吸取颜色。颜色转换在创作过程中很重要,所以你尽量要吸取相同的颜色并使用它们。

最后,确保你学会这些快捷方式。它们可以节省你很多时间和精力。还有一个快捷键 “X” ,用来快速切换你的主色和辅色。

像素其实是很小的颜色块。第一年你需要学会的是如何有效使用这些块用来生成你想要的线条。我们将探讨2种最基础的线条,直线和曲线。

我知道你在想什么——这看上去易如反掌!但对于像素来说,直线也有可能有问题。我们要避免 “锯齿” —— 一些小的锯齿使线看上去不均匀。合理运用锯齿可以使一段线比其他线段看上去大或者小。

对于弯曲处,要确保上下弧度始终保持一致。在接下来的例子中,比较顺滑的曲线像素依次为 6>3>2>1 ,而带有锯齿的曲线是 3>1<3。

制作出舒适的线条是像素尘李敏画的关键。稍后,我们将学习如何使用反锯齿来使我们的线条看起来非常顺滑。

首先要有一个好的创意!试着想象出你想用像素画画什么,无论是在脑海中还是画在纸上。稍微做一些准备工作可以使你在后面的创作中更专注。

1.你想要让这个精灵用来做什么? 是用在网页上,还是游戏中?以后会作出动画吗?如果你以后要让它动起来,那你应该把它做的尽量小且细节丰富。相反的话,你可以把丰富的细节放进这个精灵中去,这样你就不必再去重复处理它了。设想一下,这个精灵将去哪里,怎么去把它做的更好。

2.我会受到什么限制? 早期,我说过限制颜色的很重要的。理由之一是颜色受到硬件或其他相关的限制(如今不存在)。准确来说,如果你想模拟一些特定的风格(C64、NES等),考虑一下你讲绘制的精灵尺寸以你它将要适应的环境(软硬件)。

在本教程中,我没有作任何限制,但我希望你作出尽可能大的精灵,这样你就可以清晰的看到每一步都发生了什么。为此,我决定用 摔跤律师(Lucha Lawyer) 作为我的原型!他可以被用在格斗游戏,或者类似于 "Habeus Corpse Blaster" 之类的电影中。

黑色的轮廓为你的精灵提供了一个好的基本结构,这是一个好的起点。我们选择黑色的理由是因为这很暗。稍后,我将展示给你如何更改轮廓的颜色以获得更逼真的效果。

我倾向于两种绘制轮廓的方法。你可以徒手先把轮廓画好,然后把它清理干净,或者你一开始就用像素来绘制。就不断的点击点击点击,你懂的。。。

我认为你用哪种方法取决于你将绘制精灵的大小以及你的技术。如果这个精灵特别大,那么徒手绘制它的形状再清理一下会容易的多,特别是你第一次接触的时候。

在本叫承重,我们创作了一个相当大的精灵,因此我将演示第一个方法。用文字图片来说明比较容易。

使用你的鼠标或者数位板,为你的精灵勾勒出一个粗略的轮廓。不过,要确保它不要太过于粗糙——它或多或少是你想要的最终成品。

第一,滑动滚轮放大到 6倍 或者 8倍 大小,以至于我们能清楚的看到每一个像素。然后清理轮廓!特别是,你要擦除杂乱的像素(轮廓的线条只能有一个像素宽),处理所有的锯齿,并且添加在 “步骤一” 中绘制的细节。

即使最大的精灵也不会超过 200 x 200 像素。“事半功倍”(doing more with less)在绘制过程中永远不会错。你将很快发现一个像素会产生多大的变化。

保持你简单的轮廓。细节会在之后出现,但现在,集中精力在 “大的线条部分”,比方说肌肉的区分。这可能对于你有些难,但要有耐心。

随着轮廓的完成,我们有了一本填色书来填色。油漆桶和其他填色工具使我们更容易填色。选择颜色会比较困难,现在不可能指导你们学习色彩理论。不过我会介绍一些很好的基本概念。

HSB代表(Hue)色相,(Saturation)饱和度,(Brightness)明度。这是计算机色彩模型中的一种(即颜色的数值表示)。还有比如RGB和CMYK这些你们一定听说过。大多数程序都是使用HSB色彩来进行渲染的,我们将打破惯例:

Hue 色相 —— 你理解的颜色是什么?就比如“红色”,“橙色”,“蓝色”等等。

Saturation 饱和度 —— 饱和度高颜色就越鲜艳。100%的饱和度就给你最鲜艳的颜色,随着饱和度的降低,颜色会变得越来越灰。

Brightness 亮度 —— 颜色的明暗,0%的亮度就是纯黑色。

选择什么颜色取决于你自己,但有一些事你要记住:

1 .低饱和度和低亮度的颜色看上去更“土”更“卡通”。

2 .想一下色环,两个颜色看上去差距越大,它们(在色环上)距离就越远。另一方面,像红色和成色的颜色,它们在色环上的距离很接近,看上去很棒。

3 .你用的颜色越多,你的精灵就看上去越不像一个整体。要让你的精灵脱颖而出,就要只使用2~3种主色。(想一想超级马里奥吧!)

实际在填色过程中非常容易。如果你使用PS来填色,首选使用魔棒工具(快捷键 “W” )选择你要填充的区域,然后按住快捷键 “ALT+F” (原色)或按 “CTRL+F” (辅色)来进行填充。

阴影是我们塑造像素逼真的关键之一,精灵变得更加生动,或糟糕的可怕。不过,按照我说的做,你一定会成功的。

首先,我们需要选择一个光源。如果你的精灵是一个较大场景的一部分,可能会有各种各样的光源(比如灯泡、火、自然光等)照在上面。它们会在精灵上混合的非常复杂。然而在大多数情况下,选择一个较远的光源是个好注意(比方说:太阳)。对于游戏来说,你需要创建一个尽可能适应各种地方的精灵。

我通常会选择一个较远的光源,放在它上方,稍微在它前面,这样就能照亮顶部或前面,其余的地方就都被遮蔽了。这种光源可以使精灵看上去最自然。

我们一旦确定了一个光源,就可以用最暗的颜色来遮挡离光源最远的区域。上方以及前方的光源照射到模型后的区域,比如手臂下方、腿下方等地方应该画阴影。

记住,在光和阴影之间的区域不会是均匀的渐变。把一张白纸揉成一个球,再把它铺平在桌上——你还能确定它是平整的吗?因为你可以看到褶皱处有很小的阴影。用阴影来制造出衣服褶皱的感觉,应用在肌肉、头发、皮毛、裂缝等。

之后的阴影,比之前的更轻一些,应该用更加柔和的阴影。这些区域是间接被照射到的。它也可以同样应用在从黑到明的过渡中,特别是画一些曲面的时候。

直面光源的区域可以在它们上增加高光。高光应该适度使用(比阴影小的多),因为它们会分散人的注意力。

总在画好阴影之后画高光,会让你少一些烦恼。如果阴影没有画到位的话,你会把高光画的偏大一些。

阴影是大多数初学者掉坑的地方。下面是一些当你画阴影时应该遵循的方法:

1.不要用渐变。新手最大的错误。 渐变看上去很可怕,甚至表现不出表面上光的样子。

2.不要用枕式阴影(pillow-shading) 枕式阴影是由外到内的阴影。它被称为枕式阴影是由于它看起来柔和以及不确定。

3.不要使用过多的颜色。 大家通常认为 “颜色越多越真实” 。然而,在现实生活中,我们倾向于看到物体上的明暗 —— 我们的大脑过滤了这一切。在你的基础色中多使用这两种明暗程度,暗(灰或者深灰),以及明(明亮或更明亮)。

4.不要使用太相似的颜色。 除非你想画一个很模糊的精灵,不然没有理由使用两种非常相似的颜色。

保持原色是像素画艺术家不得不担心的问题。在不用更多的颜色来显示阴影,有一种方法叫 “抖动 dithering” 的技术。类似于传统的绘画手法 “十字线” 或 “点彩” ,你把两种颜色交织起来,保持它们的均匀。

简单的例子

复杂的例子

相对上方用PS渐变工具处理过的图片来说,下方是用三种颜色抖动做出来的图片。注意用不同的颜色搭配来创建图案。你可以尝试用不同的排列组合来创建新的纹理。

抖动显示能让你精灵呈现复古的感觉,因为很多老游戏只能依靠抖动显示来创作出有限的调色板(看看Sega Genesis的例子)。这不是我常用的方式,为了让你学习它,我把这个方式应用在了这个精灵身上。

你可以尝试一下抖动显示。老实说,我就看到过很少的人能用好这个方法。

选择性轮廓,或叫 “selout” ,是一种类似阴影的轮廓。我们不用黑色,而是用一种更接近精灵本身的颜色。此外,我们沿着轮廓改变明度,让光源来决定应该用什么颜色。

现在,我们把轮廓涂成黑色。这没有什么问题,它看上去不错而且挺和谐的。但在用黑色的时候,我们舍弃了真实感,让它更有 “卡通” 的感觉。选择性轮廓真的不错,看下图:

你会注意到我同样用选择性轮廓把它的肌肉纹理处理的更自然。终于精灵开始看上去像一个整体而不是一堆独立的部分。

我们做一个比较:

抗锯齿有一个前提:添加中间色来使线条更自然。举个例子,如果你把一条黑线放在白背景上,那你可以在线的边缘添加点灰色让它看上去更自然一些。

通常你要在断裂和不自然的地方添加一些中间色。如果看上去还是不自然,涂点明度更高的颜色。沿着曲线的方向处理中间区域。

我解释的很明白了。看图片你会明白我的意思:

现在我们用一下抗锯齿。记住如果你想让你的精灵在任何背景上效果很好,不要用抗锯齿处理轮廓。否则,你将看到你精灵周围有一圈很难看的 “光晕”。

你可能会问为什么我们不用油漆工具直接填色,让它变得更光滑?回答是,除了手工制作没有一种工具可以实现让它变得很自然。你有完整控制权,不单单是颜色的数量,还有从哪里获取这些颜色。而且你知道在哪些区域处理的光滑、哪些区域使用抗锯齿后会失去细节(丢失像素)。

哇哦,终于到了关电脑来一瓶冰啤酒的时候了。现在还不是时候!这是区分新手和专家的最后一步!

退一步,仔细看一下你的精灵。有可能它依然有点粗糙。花一些时间去完善它,确保每一个细节都完美。不管多累,实际上这是最有意思的环节。添加一些小细节会让你的精灵更有趣。这是真正显示你经验和技巧的时候。

你可能有疑问,为什么 Lucha Lawyer 全程都没有眼睛,或者这个头巾一直包裹着他的头。这是因为我想在最后处理这些小细节。包括在它手臂上添加臂环,裤子增加拉链等……还有,男人怎么可以没有乳头??我还加深了他的下半身、他的左手,来突出他的躯干部分。

你终于完成了他!!!Lucha Lawyer 用了45种颜色,算是比较简单的(难度取决于你的调色板限制),尺寸在150 x 115 个像素。现在你可以去畅饮啤酒了!

这总是最有意思的,在GIF图片 (点击查看) 里可以看到它的变化。

1.学习绘画的基本原理,用传统的方法练习。所有的绘画填色技巧和经验都可以用在像素画中。

2.从画小的精灵开始。最难的部分是学习用像素来画一些小细节,而不是画一个超大的精灵(真的浪费时间)。

3.学习去临摹一些艺术家的作品,不要怕去临摹。在工作之余去学习它,你需要时间去找到你自己的风格。

4.如果你没有数位板,那就买一块把。重复的点击鼠标很乏力,一定不会给你留下什么好印象。我用一块小的数位板,很适合我 —— 我喜欢在小房间里用它,在书桌上,便携性很好。你可能喜欢更大的数位板,不过你一定得先去店里试试!

5.向大家分享你的作品,获得反馈。你可能会碰到一些新朋友,或者一些键盘侠,谁知道呢!!

③ su导出dwg曲线是锯齿状

1、设置SketchUp菜单窗口中系统设置选项中的OPENGL
硬件加速跟快速反馈虽然都使用显示卡的功能,却是两种不同的观念。SketchUp要求显示卡能100%支持OpenGL是有原因的,运用OpenGL指令集驱动显卡做3D矢量运算,对显示材质和光线做细致的表现,影像在屏幕上显示是全靠显示卡和显存工作,CPU反而帮不上什麽忙。整个显示的效率全靠显卡对OpenGL的支持度。因此只要显卡能支持OpenGL就必须开启硬件加速功能这是毋庸置疑的。
快速反馈也是显示卡的功能,如果一个画面算完了再显示,那麽速度是来不及的,所以由快速反馈功能一面运算一面切换达到快速显示的目的。通常快速反馈也是必勾选的项目。只有显卡对OpenGL的支持度不良的时候产生花屏(反馈速度不足)才会不得已去掉这个功能的勾选。
至于下面那个反锯齿,会跟据SketchUp对显卡检测出能适应的反锯齿运算能力列出的设定值,当然4x最好,0x最差。要注意的反而是前面的颜色、精度和含裂阴影三项。

2、导出图像的大小
导图时你导出的像素点越高,则线就越细。一般上到4000点的图线就很细了,有锯齿也看不清了。

3、设置显卡渲染帧数
渲染帧数意味着CPU渲染了多少帧才交给显卡处理,而不是CPU协助处理,所有帧CPU都要参与处理的。比如默认是卜指3,就是等CPU处理了3帧,才开始由显卡处理,这样可以在性能急降的时候让画面变得流畅,因为你已经缓存了3帧,只需取用缓存的帧就可以了,所以理论上越高越流畅,这个流畅只是指动作连贯而不是帧数高,但是设置太高会造成输入延迟和可能造成慢动作等问题。
显卡设置中由3D应用程序决定”选项,这个选项的用意是让SketchUp这些应用程序内建的型老配OpenGL引擎控制显卡的驱动设置,SketchUp的OpenGL面板上性能选项才能接手控制。通常我们都采用勾选这个选项。如果在显卡设置面板直接设置渲染帧数则需要不断测试显示结果,同时不是仅仅调整其中某一个参数就能得到所期望的效果。

渲染帧数设置好后在SketchUp里选择加速选项

④ 图像怎么做抗锯齿(反走样)处理

走样 光栅系统在理论上只能用光栅网格上的象素近似地描绘平滑的直线、多边形和诸如圆与椭圆那样的曲线图元的边界。它引起了锯齿或阶梯状,这种视觉人工痕迹是信号处理理论中被称为走样的错误采样的表现。 反走样 在光栅图形显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状或台阶状外观。这是因为直线、多边形、色彩边界等是连续的,而光栅则是由离散的点组成,在光栅显示设备上表现直线、多边形等,含早必须在离散位置采样。由于采样不充分重建后造成的信息失真,就叫走样(aliasing)。而用于减少或消除这种效果的技术,就称为反走样(antialiasing)。 计算机生成图像时通常存在三种走样现象中的两种:锯齿形边以及图形细节或纹理绘制失真。第三种现象出现在显示非常微小对象的场合。 基本上反走样方法可分为两类。第一类是提高分辨率 即增加采样点(提高采样频率)。然而,CRT光栅扫描设备显示非常精细光栅的能力是有限的,因此森携人们通常是在较高分辨率上对光栅进行计算,然后采用某种平均算法(滤除此老伏高频分量)得到较低分辨率的象素的属性,并显示在分辨率较低的显示器上 。这种方法称为超采样或后置滤波。另一类反走样是把像素作为一个有限区域,对区域采样来调整像素的亮度,以光顺边界来减小锯齿现象 J。这种方法等价于图像的前置滤波。

⑤ C#制作不规则窗体,如何使边缘平滑(抗锯齿)

实现窗体自动隐藏(c代码)
最近写个小程序,想让窗体数旦自动隐藏,到csdn搜索,发现不少网友问这个问题,可是具体实现的例子不多,我经过琢磨,实现可记录停靠位置,可左上右三方停靠并隐藏。现将实现的例子拿出来供大家参考。 实现窗体自动隐藏方法很多,可以使用定时器,不断监视鼠标,当鼠标移动到窗体边缘时,显示窗体,当鼠标离开后隐藏窗体。也可以在鼠标收到WM_NCMOUSEMOVE或 WM_MOUSEMOVE(无边框窗体)时激活窗体,然后在窗体消息WM_ACTIVE中设置显示或隐藏,这种方法在窗体未失去焦点时不会隐藏。我在薯哗扰原本的设计中便使用这种方法,只是在设计时发现非主窗体不太合适,激活窗体时会出现两个键盘焦点,而且我所需要的焦点是虚假的,可能我的设计不当芦陵,那位朋友若能完美实现,不妨交流一下。

本代码的流程如下:

初始化窗体时设置窗体位置,并设置依靠状态窗体状态。
当接收到WM_MOUSEMOVE消息时,检查窗体是否显示,若否,显示,并打开定时器。
在WM_MOVING中检测窗体位置,并自动靠拢边界。
在定时器中检测鼠标,当鼠标离开窗体后,关闭定时器,隐藏窗体。 当然,在隐藏窗体时首先判断位置,若停靠在边缘,则隐藏,否则,不隐藏。
现在我们一步步看代码。

int alignType;//全局变量,用于记录窗体停靠状态
enum
{
ALIGN_NONE,//不停靠
ALIGN_TOP,//停靠上边
ALIGN_LEFT,//停靠左边
ALIGN_RIGHT//停靠右边
};
#define NEAR_SIZE 20//定义自动停靠有效距离
#define NEAR_SIDE 2//窗体隐藏后在屏幕上保留的像素,以使鼠标可以触及
/*
下面代码处理窗体消息WM_MOVING,pRect是由参数lParam传来的指针
*/
void OnMoving(HWND hWnd, LPRECT pRect)
{
//未靠边界由pRect测试
if (alignType == ALIGN_NONE)
{
if (pRect->top < NEAR_SIZE)//在上边有效距离内,自动靠拢。
{
alignType = ALIGN_TOP;
pRect->bottom -= pRect->top;
pRect->top = 0;
}
if (pRect->left < NEAR_SIZE)//在左边有效距离内
{
alignType = ALIGN_LEFT;
pRect->right -= pRect->left;
pRect->left = 0;
}
else if (pRect->right + NEAR_SIZE >
ScreenX)//在右边有效距离内,ScreenX为屏幕宽度,可由GetSystemMetrics(SM_CYSCREEN)得到。
{
alignType = ALIGN_RIGHT;
pRect->left += (ScreenX - pRect->right);
pRect->right = ScreenX;
}
}
else
{
//靠边界由鼠标测试
POINT pt;
GetCursorPos(&pt);
if (alignType == ALIGN_TOP)
{
if (pt.y >
NEAR_SIZE)//由于我们移动窗体时,鼠标在标题栏内,当鼠标位置超过有效距离后,我们可以考虑用户要向下拖动鼠标。我们便解除上部停靠。
{
alignType = ALIGN_NONE;
pRect->bottom += NEAR_SIZE;
pRect->top = NEAR_SIZE;
}
else
{
pRect->bottom -= pRect->top;
pRect->top = 0;
if (pRect->left < NEAR_SIZE)//在上部停靠时,我们也考虑左右边角。
{
pRect->right -= pRect->left;
pRect->left = 0;
}
else if (pRect->right + NEAR_SIZE > ScreenX)
{
pRect->left += (ScreenX - pRect->right);
pRect->right = ScreenX;
}
}

}
if (alignType == ALIGN_LEFT)
{
if (pt.x - pRect->right >
0)//鼠标可以在整个标题条来回移动,所以我们不能简单用左边界和鼠标的距离来解除停靠,这里我们在鼠标离开右边界时解除停靠。
{
alignType = ALIGN_NONE;
pRect->right += NEAR_SIZE;
pRect->left = NEAR_SIZE;
}
else
{
pRect->right -= pRect->left;
pRect->left = 0;
if (pRect->top < NEAR_SIZE)//考虑左上角。
{
pRect->bottom -= pRect->top;
pRect->top = 0;
}
}
}
else if (alignType == ALIGN_RIGHT)
{
if (pt.x < pRect->left)//当鼠标离开左边界时,解除停靠。
{
alignType = ALIGN_NONE;
pRect->left -= NEAR_SIZE;
pRect->right -= NEAR_SIZE;
}
else
{
pRect->left += (ScreenX - pRect->right);
pRect->right = ScreenX;
if (pRect->top < NEAR_SIZE)//考虑右上角。
{
pRect->bottom -= pRect->top;
pRect->top = 0;
}
}
}
}
}
/*
在窗体初始化是设定窗体状态,如果可以停靠,便停靠在边缘
我本想寻求其他方法来解决初始化,而不是为它专一寻求一个函数,可是,窗体初始化时不发送WM_MOVING消息,我不得不重复类似任务.
*/
void NearSide(HWND hWnd)
{
int change = 0;
RECT rect;
GetWindowRect(hWnd, &rect);
alignType = ALIGN_NONE;
if (rect.left < NEAR_SIZE)
{
alignType = ALIGN_LEFT;
if ((rect.left != 0) && rect.right != NEAR_SIDE)
{
rect.right -= rect.left;
rect.left = 0;
change = 1;
}
}
else if (rect.right > ScreenX - NEAR_SIZE)
{
alignType = ALIGN_RIGHT;
if (rect.right != ScreenX && rect.left != ScreenX - NEAR_SIDE)
{
rect.left += (ScreenX - rect.right);
rect.right = ScreenX;
change = 1;
}
}
//调整上下
if (rect.top < NEAR_SIZE)
{
alignType = ALIGN_TOP;
if (rect.top != 0 && rect.bottom != NEAR_SIDE)
{
rect.bottom -= rect.top;
rect.top = 0;
change = 1;
}
}
if (change)
{
MoveWindow(hWnd, rect.left, rect.top, rect.right - rect.left,
rect.bottom - rect.top, TRUE);
}
}
/*
窗体的显示隐藏由该函数完成,参数hide决定显示还是隐藏.
*/
void HideSide(HWND hWnd, BOOL hide)
{
RECT rc;
int moves = 20;//动画滚动窗体的步数,如果你觉得不够平滑,可以增大该值.
int xStep, yStep;
int xEnd, yEnd;
int width;
int height;
register int i;
GetWindowRect(hWnd, &rc);
width = rc.right - rc.left;
height = rc.bottom - rc.top;
//下边判断窗体该如何移动,由停靠方式决定
switch (alignType)
{
case ALIGN_TOP:
{
//向上移藏
xStep = 0;
xEnd = rc.left;
if (hide)
{
yStep = -rc.bottom / moves;
yEnd = -height + NEAR_SIDE;
}
else
{
yStep = -rc.top / moves;
yEnd = 0;
}
break;
}
case ALIGN_LEFT:
{
//向左移藏
yStep = 0;
yEnd = rc.top;
if (hide)
{
xStep = -rc.right / moves;
xEnd = -width + NEAR_SIDE;
}
else
{
xStep = -rc.left / moves;
xEnd = 0;
}
break;
}
case ALIGN_RIGHT:
{
//向右移藏
yStep = 0;
yEnd = rc.top;
if (hide)
{
xStep = (ScreenX - rc.left) / moves;
xEnd = ScreenX - NEAR_SIDE;
}
else
{
xStep = (ScreenX - rc.right) / moves;
xEnd = ScreenX - width;
}
break;
}
default:
return;
}
//动画滚动窗体.
for (i = 0; i < moves; i++)
{
rc.left += xStep;
rc.top += yStep;
SetWindowPos(hWnd, NULL, rc.left, rc.top, 0, 0, SWP_NOSIZE |
SWP_NOSENDCHANGING);
RedrawWindow(hWnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW);
Sleep(5);
}
SetWindowPos(hWnd, NULL, xEnd, yEnd, 0, 0, SWP_NOSIZE);
if (!hide)//如果窗体已被显示,设置定时器.监视鼠标.
{
SetTimer(hWnd, WM_TIMER, 500, NULL);
}
}
/*
下面就是通过窗体回调函数将这些函数组织起来.
这里仅列出使用的消息
*/
case WM_TIMER://定时器消息
{
POINT pt;
RECT rc;
GetCursorPos(&pt);
GetWindowRect(hWnd, &rc);
if (!PtInRect(&rc, pt))//若鼠标不在窗体内,隐藏窗体.
{
KillTimer(hWnd, WM_TIMER);
HideSide(hWnd, TRUE);
}
break;
}
case WM_CREATE:
case WM_INITDIALOG: //初始化消息
{
SetWindowPos(…) //程序保存窗体上次靠位置,在这里恢复.
NearSide(hWnd);
break;
}
//这两个消息是在窗体移动开始时和结束时产生的,我们在窗体开始移动时关闭定时器,移动结束后再打开,这样避免窗体移动时隐藏,金山快译的浮动条就有这种情况出现.
case WM_ENTERSIZEMOVE:
{
KillTimer(hWnd, WM_TIMER);
break;
}
case WM_EXITSIZEMOVE:
{
SetTimer(hWnd, WM_TIMER, 500, NULL);
break;
}
case WM_MOUSEMOVE://受到窗体移动消息时,判断窗体是否显示,
{
RECT rc;
GetWindowRect(hWnd, &rc);
if (rc.left < 0 || rc.top < 0 || rc.right > ScreenX) //未显示
HideSide(hWnd, FALSE);
break;
}
case WM_MOVING://处理窗体移动时消息,实现自动停靠
{
OnMoving(hWnd, (LPRECT) lParam);
break;
}
case WM_MOVE:
{
//保存窗体位置
}

这些代码是从我的代码中摘录出来的,我已尽量检查它们的完整性,但人总有犯错的时候,如果你发现这些代码有问题,或有更好的建议,请联系我.

⑥ GTA4 ENB和模糊补丁的问题!急~

ENB修改方法

[PROXY]第三方.dll
EnableProxyLibrary=true(第三方.dll在游戏启动时运行) [true=开启好者,false关闭]
InitProxyFunctions=true(第三方.dll状友胡薯态) [true=开启,false关闭]
ProxyLibrary=(填写你的.dll地址)
[GLOBAL]整体工作状态
AdditionalConfigFile=(填写你的第三方.ini地址)
UseEffect=true(ENB在游戏启动时运行)[true=开启,false关闭]
CyclicConfigReading=false(读取Cyclic配置文件) [true=开启,false关闭,本项建议关闭]
ForceNVidiaCard=true(使用NVidia加速,NVidia用户建议开启) [true=开启,false关闭]
ForceNVidiaCaps=true(使用NVidia加速,NVidia用户建议开启) [true=开启,false关闭]
AlternativeDepth=1(景深)[1开启,0关闭]
AllowAntialias=1(允许反锯齿)[1开启,0关闭]
BugFixMode=0(BUG修复)[1开启,0关闭]
SkipShaderOptimization=0(跳过Shader优化)[1开启,0关闭]
QuadVertexBuffer=0(四级缓冲?)[1开启,0关闭]
EnableShaders_3_0=1(Shaders渲染加强)[1开启,0关闭]
[ENGINE]
ForceDisplaySize=false(屏幕分辨率控制)[true=开启,false关闭]
ForceAntialiasing=false(反锯齿)[true=开启,false关闭]
ForceDisplayRefreshRate=false(屏做高幕刷新率控制加强,警告!必须非常小心使这个参数,否则后果自负!)[true=开启,false关闭]
ForceAnisotropicFiltering=true(各项纹理过滤)[true=开启,false关闭]
MaxAnisotropy=16(各项纹理过滤等级)[16最高,8中,4低,2最低]
AntialiasingQuality=1(反锯齿等级)[-1最高,0高,1中高,2低]
AntialiasingUpScale=1.0(高抗反锯齿走样)
DisplayRefreshRateHz=70(请填写屏幕刷新率)
DisplayWidth=1024(屏幕宽)
DisplayHeight=768(屏幕高)
ReflectionsForceHighPrecision=true(该参数貌似只支持A卡,使用A卡的用户建议开启)
ReflectionsExtremePrecision=true(该参数貌似只支持A卡,使用A卡的用户建议开启)
AntialiasingSampleCount=0(抗锯齿采样)
[EFFECT]组件 (建议使用默认)
EnableBloom=true[true=开启,false关闭]
EnableAmbientOcclusion=true[true=开启,false关闭]
EnableSkyLighting=true[true=开启,false关闭]
UseOriginalPostProcessing=false[true=开启,false关闭]
EnableOcclusion=1[1开启,0关闭]
EnableReflection=1[1开启,0关闭]
EnableMotionBlur=1[1开启,0关闭]
EnableWater=1[1开启,0关闭]
EnableShadow=1[1开启,0关闭]
DepthBias=1[1开启,0关闭]
EnableDepthOfField=1[1开启,0关闭]
[INPUT]按键设置(一般情况下不需设定,我就不翻译了)
KeyUseEffect=123
KeyCombination=16
KeyScreenshot=44
KeyAmbientOcclusion=121
KeyBloom=120
KeyOcclusion=121
KeyReflection=122
KeyShadow=119
KeyWater=118
KeyShowFPS=106
[BLOOD](血迹效果)
ReflectionAmount=1.5(反射距离,建议默认)
SpecularPower=0.8(反射强度,建议默认)
[TREE](树木效果)
LeavesReflectionAmount=0.15(反射数量)
LeavesSpecularPower=0.5(反射强度)
LeavesAmbientAmount=0.3(周围反射强度)
LeavesColorMultiplier=1.2(反**色乘数)
LeavesColorPow=1.2(颜色深度)
[BUILDING](建筑物效果)
WindowLightIntensity=1.8(窗口反射强度)
[LIGHT1](灯光亮度)
LightIntensity=1.0(光线强度)
LightAOAmount=1.4(光线数量)
LightILAmount=0.0(光线数量)
EdgeLighteningAmount=0.0(边缘反射强度)
ColorPow=2.5(颜色深度)
LightCurve=1.0(曲线数量)
[LIGHT2](街道效果)
LightIntensity=1.5(光线强度)
LightAOAmount=1.5(光线数量)
LightILAmount=1.5(光线数量)
EdgeLighteningAmount=0.3(边缘反射强度)
ColorPow=2.5(颜色深度)
LightCurve=0.7(曲线数量)
[LIGHT3](车辆反射)
LightIntensity=3.5(光线强度)
LightAOAmount=0.0(光线数量)
LightILAmount=6.0(光线数量)
EdgeLighteningAmount=0.4(边缘反射强度)
ColorPow=3.5(颜色深度)
LightCurve=1.0(曲线数量)
[LIGHT4](二次反射)
LightIntensity=1.0(光线强度)
LightAOAmount=0.0(光线数量)
LightILAmount=4.0(光线数量)
EdgeLighteningAmount=1.0(边缘反射强度)
ColorPow=2.5(颜色深度)
LightCurve=1.0(曲线数量)
[LIGHT5](总体周围反射)
LightIntensity=1.5(光线强度)
LightAOAmount=1.0(光线数量)
LightILAmount=0.0(光线数量)
EdgeLighteningAmount=0.0(边缘反射强度)
ColorPow=3.0(颜色深度)
LightCurve=1.0(曲线数量)
[LIGHT6](总体周围反射2)
LightIntensity=2.0(光线强度)
LightAOAmount=1.0(光线数量)
LightILAmount=0.0(光线数量)
EdgeLighteningAmount=0.0(边缘反射强度)
ColorPow=3.0(颜色深度)
LightCurve=1.0(曲线数量)
[CARHEADLIGHT](车灯效果)
EmissiveMuliplier=5(灯光数量)
LightIntensity=1(反射强度)
[LIGHTSPRITE](特殊项,建议不修改)
UseExternalTexture=false(使用外部纹理)[true=开启,false关闭]
Intensity=1.0(强度)
IntensityInReflection=1.0(反射强度)
UseRays=true(使用射线)
RaysNumber=6(射线数量)
RaysIntensity=0.1(射线强度)
RaysRateOfChange=10.0(光线变化率)
RaysLength=2.0(射线长度)
[CARWINDOWGLASS](车辆车窗效果)
ReflectionAmount=1(反射数量)
SpecularPower=100.0(反射力度)
SpecularAmount=10.0(反射距离)
[CHROME](金属反射效果)
ReflectionFront=1.5(前面反射力度)
ReflectionSide=0.1(侧面反射力度)
SpecularPower=100.0(总体反射力度)
SideFade=1.0(消失距离)
MetallicAmount=0.05(金属反射数量)
[WHEELS](车轮)
ReflectionFront=0.2(前面反射力度)
ReflectionSide=1.2(侧面反射力度)
SpecularPower=0.08(总体反射力度)
SideFade=1.0(消失距离)
MetallicAmount=0.1(金属反射数量)
[REFLECTION1](反射效果1)
ReflectionFront=0.5(前面反射力度)
ReflectionSide=1.4(侧面反射力度)
SpecularPower=1.0(总体反射力度)
SideFade=100.0(消失距离)
MetallicAmount=0.05(金属反射数量)
[REFLECTION2](反射效果2)
ReflectionFront=0.5(前面反射力度)
ReflectionSide=1.0(侧面反射力度)
SpecularPower=1.0(总体反射力度)
SideFade=100.0(消失距离)
[REFLECTION3](反射效果3)
ReflectionFront=0.6(前面反射力度)
ReflectionSide=1.0(侧面反射力度)
SpecularPower=1.0(总体反射力度)
SideFade=100.0(消失距离)
[BLOOM](此项除了BloomQuality其他建议默认,不翻译,免得大家改来错的离谱,我是深受其害)
BloomQuality=-1(植被质量)
BlueShiftAmount=0.5
Radius1=2.0
Radius2=4.5
Contrast=9.9
BloomPowerDay=20
BloomFadeTime=2000
BloomConstantDay=5
BloomScreenLevelDay=60
BloomCurveDay=3
BloomPowerNight=25
BloomConstantNight=5
BloomCurveNight=3
BloomScreenLevelNight=20
BloomAdaptationScreenLevel=80
BloomAdaptationMultiplier=20
BloomAllowOversaturation=1
BloomMaxLimit=100
[SSAO_SSIL](特殊项,不是很建议修改)
ApplyAntialiasing=true(应用反锯齿)[true=开启,false关闭]
SamplingQuality=-1(采样质量)
SamplingRange=1.0(采样范围)
SizeScale=0.5(大小规模)
SourceTexturesScale=1.5(源素材规模)
FilterQuality=-1(过滤质量)
AOAmount=1.4(翻译不出来,不知道AO是什么)
LAmount=0.0(翻译不出来,不知道L么)
EdgeLighteningAmount=0.0(边减负总额)
[SHADOW](影子)
FilterQuality=-1(影子质量)
ShadowFadeStart=60(影子开始消失的距离)
ShadowFadeEnd=85(影子完全消失的距离)
ShadowAmountDay=60(影子深度)
ShadowAmountNight=30(夜晚影子深度)
ShadowScreenLevelDay=64(水平影子深度)
ShadowScreenLevelNight=20(夜晚水平影子深度)
ShadowQuality=-1(影子质量)
UseShadowFilter=0(使用影子过滤器)
ShadowBlurRange=30(影子动态模糊乘数)
[ADAPTATION](特殊项,我还是不建议各位修改)
ForceMinMaxValues=true(载入最大最小值)[true=开启,false关闭]
AdaptationTime=1.0(视觉调整时间)
AdaptationMin=1.0(视觉最小值)
AdaptationMax=1.0(视觉最大值)
AdaptationMinMultiplier=1.0(视觉最小强度)
AdaptationMaxMultiplier=1.0(视觉最大强度)
[ENVIRONMENT](环境效果)
DirectLightingIntensity=1.0(火焰亮度)
NightLightingIntensity=2.0(夜晚亮度,参数太高了会白天和晚上一样)
DirectLightingCurve=0.6(光线弧度)
ReflectionAmountMultiplier=1.0(反射强度)
SpecularAmountMultiplier=1.0(镜面反射强度)
SpecularPowerMultiplier=1.0(镜面反射力度)
ColorPow=1.6(颜色深度)
AmbientSunMultiplier=1.0(太阳大小,参数太高太阳会很大)
AmbientSkyMultiplier=1.0(天空强度)
AmbientSunSaturation=1.0(太阳饱和度)
AmbientSkySaturation=1.0(天空饱和度)
[SKYLIGHTING](天窗采光)
FilterQuality=-1(过滤质量)
AmbientSunMix=2.0(太阳混合环境)
AmbientSkyMix=4.0(天空混合环境)
AmbientContrast=1.3(环境对比)
AmbientMinLevel=0.3(环境最小程度)
[SKY](此项复杂,没有周大那种本事还是不修改的好)
AzimuthHeight=0.15(方位角高度)
AzimuthMultiplier=3.5(方位乘数)
AzimuthSunAffectPower=2.0(太阳方位的影响力)
AzimuthSunAffectAmount=0.7(太阳方位的影响度)
AzimuthMultiplier=3.5(方位乘数)
TopColorMultiplier=0.7(顶部颜色乘数)
ColorSaturation=0.0(色彩饱和度)
ColorPower=1.5(彩色能量)
SunIntensity=1.0(太阳强度)
SunMaxBrightness=50.0(太阳最大亮度)
SunColorFilterR=1.0(太阳的颜色过滤

SunColorFilterG=0.8(太阳的颜色过滤)
SunColorFilterB=0.6(太阳的颜色过滤)
SunColorFilterCurve=3.0(太阳的颜色过滤曲线)
SunCoronaCurve=1.0(太阳日冕曲线)
SunCoronaIntensity=1.4(太阳日冕强度)
SunDesaturation=0.8(太阳饱和度)
OverallPower=1.0(总功率

OverallIntensity=1.0(整体强度)
=4.0(亮度上限乘数

CloudsUseCustomTexture=true(云彩使用自定义纹理)
CloudsCurve=1.5(云曲线)
CloudsIntensity=1.3(云强度)
CloudsDesaturation=0.7(云饱和度

CloudsEdgeClamp=0.95(云边缘强行收缩)
CloudsEdgeIntensity=3.0(云边缘强度)
CloudsEdgeRange=8.0(云边范围)
StarsUseCustomTexture=true(星空使用自定义纹理)
StarsAmount=1.3(星星大小)
StarsIntensity=2.0(星星强度)
StarsBrightness=15.0(星空亮度)
MoonIntensity=60.0(月球强度)
MoonGamma=1.5(月球伽玛)
MoonSize=0.1(月球大小)
MoonLightingCurve=0.7(月亮照明曲线)
NightCloudsEdgeClamp=3.5(夜云边缘强行收缩)
NightCloudsEdgeIntensity=12.0(夜云的边缘强度)
NightCloudsEdgeRange=14.0(夜云的边缘范围)
几项我不翻译了,下次补上,今天实在很累了
[REFLECTION](此项复杂,还是那句话,最好不要改)
ReflectionPower=15()
ChromePower=10()
UseCurrentFrameReflection=0()
ReflectionQuality=-1()
ReflectionSourceSpecular=50()
ReflectionSourceTFactor=50()
UseAdditiveReflection=0()
ReflectionDepthBias=0()
UseLowResReflection=1()
ReflectionSinglePass=1()
useEnvBump=1()
EnvBumpAmount=100()
EnvBumpOffset=100()
ReflectionFlip=0()
[SSAO]
UseFilter=1
OcclusionQuality=-1
FilterQuality=-1
DarkeningLevel=30
BrighteningLevel=30
IlluminationLevel=30
AdditiveIlluminationLevel=30
UseAmbientOcclusion=1
UseIndirectLighting=1
FadeDistance=50
UseForAlphaTest=1
UseForAlphaBlend=1
UseNoiseRandomization=1
[COLORCORRECTION]()
DarkeningAmountDay=30
ScreenLevelDay=60
ScreenLevelNight=20
DarkeningAmountNight=-10
GammaCurveDay=0
GammaCurveNight=3
ColorSaturationDay=0
ColorSaturationNight=0
UsePaletteTexture=0
[WATER](水效果)
UseWaterDeep=1(水景深)
WaterDeepness=35(水深能见度)
WaterQuality=-1(水质量)
[MOTIONBLUR](动态模糊)
MotionBlurQuality=-1动态模糊
MotionBlurVelocity=40(动态模糊速度,机子性能好的话,建议100)
MotionBlurRotation=40(动态模糊旋转,机子性能好的话,建议100)
()
SpecularColorMin=0
SpecularColorMax=100
SpecularColorMultiplier=100
SpecularGlossinessMin=0
SpecularGlossinessMax=100
SpecularGlossinessMultiplier=100
[DEPTHOFFIELD]()
DOFQuality=-1
DOFNumberOfPasses=1
DOFFocusRange=50
DOFBlurinessRange=10

⑦ 游戏锯齿是什么

问题一:游戏选项中的抗锯齿和垂直同步是什么意思?有什么作用? 抗锯齿(Anti-aliasing):由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次告乎耐采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
垂直同步
1、要知道什么是垂直同步,必须要先明白显示器的工作原理。
显示器上的所袜春有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数――水平同步和垂直同步。
2、啥叫水平同步?啥叫垂直同步?
垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!
3、关键部分
为什么是否关闭垂直同步信号会影响我们CS中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。
如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。
而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。
但是,但是,但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!

问题二:游戏里说的开锯齿是什么? 简单的说 就是使画面更圆滑 边角更圆滑
当然高了好 但是 对系统配置要求很高
游戏中的任何东西都有模型,他们都由N个多边形组成,多边形越多那么这个物体就越细腻(锯齿少),少则反之(锯齿多)。所以开了抗锯齿可以让游戏中的东西多边形变更多,让游戏画面更好

问题三:游戏抗锯齿啥意思 抗锯齿(Anti-aliasing):标准翻译为”抗图像折叠失真“。由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。简单的说也就功将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
其实就是分辨率的问题,抗锯齿就是看起来更细腻,更自然点

问题四:单机游戏的抗锯齿是什么意思?数值越大越好还是越小越好? 抗锯齿就是减少游戏图形边缘的锯齿状像素格,使画面看上去更精细而不是满屏的马赛克。数值越大画面越好,但相应的会提升对电脑配置的要求。

问题五:游戏中的抗锯齿是什么意思 打个简单的比方,游戏中的模型建模是需要以像素为最基本单位的,一个小方块一个小方块(其实和屏幕的成像原理类似,也是巨多的小顷羡像素点组成的),如果你把一张图一直放大就会看到,因为方块是矩形,所以图像的边缘或者曲线线条就会是像楼梯或者锯子一样,抗锯齿的效果是耗费显卡和设备cpu资源去处理这些锯齿,使之显示的平滑圆润,也有不同的等级×2 ×4 ×8 越高,边缘或模型显示越自然,当然资源也耗费的越多,帧数就会相应的降低。

问题六:游戏里的抗锯齿选项有什么用 开了后会让游戏画面更细腻!
没有锯齿状的东西!
整体更圆滑了!

问题七:游戏中的抗锯齿什么意思,有什么效果 一般情况下,游戏中的斜线,都是类似锯齿的形状,是由若干微小的水平或者垂直线连起来的

如果开了反锯齿,那么就可以把这些微小的水平或者垂直线变得更小更细,使肉眼难以看出锯齿,这样图形就显得平滑,顺眼了。可是这个功能会严重增加显卡的负担,你的显卡如果不够好,那么负担太重,自然就会卡了

问题八:游戏里老是有个抗锯齿是什么?怎么调? 抗锯齿,顾名思义,就是对抗锯齿,如果关闭抗锯齿,游戏的各种道具,人物的边缘就会出现像锯齿一样的形状,开启抗锯齿后,边缘就会变得柔顺,而不是像锯齿那样。但如果开的过高,游戏会变得卡,除非你的显卡很好,不然就开低或不开,想要调的话,可以进入到游戏的设置中,那里面就有,不知道你玩的是哪种类型的游戏,抗锯齿的话,FPS调抗锯齿就是在游戏设置中。

问题九:锯齿是什么意思 抗锯齿(Anti-aliasing):由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
垂直同步
1、要知道什么是垂直同步,必须要先明白显示器的工作原理。
显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数――水平同步和垂直同步。
2、啥叫水平同步?啥叫垂直同步?
垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!
3、关键部分
为什么是否关闭垂直同步信号会影响我们CS中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。
如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。
而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。
但是,但是,但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!

问题十:游戏选项中的抗锯齿和垂直同步是什么意思?有什么作用? 抗锯齿(Anti-aliasing):由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。它是提高画质以使之柔和的一种方法。如今最新的全屏抗锯齿(FullSceneAnti-Aliasing)可以有效的消除多边形结合处(特别是较小的多边形间组合中)的错位现象,降低了图像的失真度。全景抗锯齿在进行处理时,须对图像附近的像素进行2-4次采样,以达到不同级别的抗锯齿效果。简单的说也就是将图像边缘及其两侧的像素颜色进行混合,然后用新生成的具有混合特性的点来替换原来位置上的点以达到柔化物体外形、消除锯齿的效果。
垂直同步
1、要知道什么是垂直同步,必须要先明白显示器的工作原理。
显示器上的所有图像都是一线一线的扫描上去的,无论是隔行扫描还是逐行扫描,显示器,都有2种同步参数――水平同步和垂直同步。
2、啥叫水平同步?啥叫垂直同步?
垂直和水平是CRT中两个基本的同步信号,水平同步信号决定了CRT画出一条横越屏幕线的时间,垂直同步信号决定了CRT从屏幕顶部画到底部,再返回原始位置的时间,而恰恰是垂直同步代表着CRT显示器的刷新率水平!
3、关键部分
为什么是否关闭垂直同步信号会影响我们CS中的fps数值?道理一点都不复杂,首先我们平时运行操作系统一般屏幕刷新率是多少?大概一般都是在85上下吧,那么显卡就会每按照85的频率时间来发送一个垂直同步信号,信号和信号的时间间隔是85的分辨率所写一屏图像时间。
如果我们选择“等待垂直同步信号”(也就是我们平时所说的“垂直同步打开”),那么在游戏中,或许强劲的显卡迅速的绘制完一屏的图像,但是没有垂直同步信号的到达,显卡无法绘制下一屏,只有等85单位的信号到达,才可以绘制。这样fps自然要受到操作系统刷新率运行值的制约。
而如果我们选择“不等待垂直同步信号”(也就是我们平时所说“关闭垂直同步”),那么游戏中作完一屏画面,显卡和显示器无需等待垂直同步信号,就可以开始下一屏图像的绘制,自然可以完全发挥显卡的实力。
但是,但是,但是,不要忘记,正是因为垂直同步的存在,才能使得游戏进程和显示器刷新率同步,使得画面平滑,使得画面稳定。取消了垂直同步信号,固然可以换来更快的速度,但是在图像的连续性上,性能势必打折扣。这也正是很多朋友抱怨关闭垂直后发现画面不连续的理论原因!

阅读全文

与反锯齿曲线源码相关的资料

热点内容
部队抗洪抢险命令范文 浏览:884
欧姆龙plc编程软件使用教程 浏览:590
ai文件pdf 浏览:911
腾讯云服务器挂载混合云 浏览:758
智能小车用什么单片机 浏览:463
java怎么给窗口关闭 浏览:940
列举51单片机的寻址方式 浏览:706
剪辑app怎么写长篇文字 浏览:400
app专属流量过月租怎么不更新 浏览:654
王者程序员都有谁 浏览:76
给牛换脚掌解压 浏览:387
围棋有多少种算法 浏览:602
unity资源包在哪个文件夹 浏览:704
阿里云服务器远程链接不成功 浏览:482
文件系统pdf 浏览:766
原神安卓区服什么意思 浏览:37
贝壳app怎么线上发布 浏览:159
如何挑选安卓系统机顶盒 浏览:54
安卓快充使用有什么注意事项 浏览:910
黑马程序员的云计算网课 浏览:948