① 開發者中的「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自然要受到操作系統刷新率運行值的制約。
而如果我們選擇「不等待垂直同步信號」(也就是我們平時所說「關閉垂直同步」),那麼游戲中作完一屏畫面,顯卡和顯示器無需等待垂直同步信號,就可以開始下一屏圖像的繪制,自然可以完全發揮顯卡的實力。
但是,但是,但是,不要忘記,正是因為垂直同步的存在,才能使得游戲進程和顯示器刷新率同步,使得畫面平滑,使得畫面穩定。取消了垂直同步信號,固然可以換來更快的速度,但是在圖像的連續性上,性能勢必打折扣。這也正是很多朋友抱怨關閉垂直後發現畫面不連續的理論原因!