2015年8月12日
摘要: 卷積(convolution)是泛函分析里的一個(gè)概念,不過(guò)泛函分析一般都是數(shù)學(xué)系才學(xué)的,計(jì)算機(jī)系的學(xué)生大多在概率統(tǒng)計(jì)課本里了解到。它分為兩種形式,一個(gè)是離散形式,一個(gè)是連續(xù)(積分)形式。在圖像處理中我們更關(guān)心離散卷積,不過(guò)也先看看積分形式的卷積。現(xiàn)在假設(shè)我們有兩個(gè)函數(shù)f(x)和g(x),這里g(x)又叫做平滑函數(shù)或者卷積核,那么它們?cè)谶B續(xù)空間的卷積是
閱讀全文
2015年1月2日
2014年8月16日
摘要: 這是本文作者所寫(xiě)的一個(gè)小小的Vim插件,小到都不必為它新開(kāi)一個(gè)Github項(xiàng)目。如果曾經(jīng)玩過(guò)金山打字的朋友肯定對(duì)這個(gè)不陌生,無(wú)非兩行,上行對(duì)照,下行打字。這個(gè)Vim腳本模擬了這個(gè)方式,也因此它即使名為Game,其實(shí)挺無(wú)趣的囧rz=3
閱讀全文
2013年10月28日
摘要: 我在解決亂碼上面實(shí)際走了不少?gòu)澛罚隽撕芏鄬?shí)驗(yàn),查了很多資料。在這里做下筆記,希望后來(lái)者可以明白,少走些彎路。
閱讀全文
2012年8月1日
摘要: 先看on_draw函數(shù):我們先定義了兩個(gè)頂點(diǎn)源,一個(gè)是橢圓,另一個(gè)是自制的三角形;先把rasterizer重置,清除上次重繪留下的光柵信息;我們?cè)僭诠鈻胖刑砑舆@兩個(gè)頂點(diǎn)源,用渲染器渲染,就是了……
閱讀全文
2012年7月24日
摘要: 頂點(diǎn)源(Vertex Source)不是一個(gè)類(lèi),而是一種類(lèi)的模式。這個(gè)類(lèi)里面有rewind()函數(shù)和vertex()函數(shù)給AGG內(nèi)部調(diào)用。類(lèi)如其名,頂點(diǎn)源就是為繪圖系統(tǒng)提供頂點(diǎn)信息的……
閱讀全文
摘要: 可能有的人會(huì)覺(jué)得奇怪的是,為什么在畫(huà)線函數(shù)中,不用pix_fmt.copy_pixel()而用ren_bas.copy_pixel()呢?因?yàn)椋趐ix_fmt中,混合器不進(jìn)行檢查,像素拷貝的時(shí)候會(huì)拷貝到剪裁區(qū)域以外,這樣會(huì)造成很奇怪的情況,以至于如果寫(xiě)到了緩存以外,還會(huì)出現(xiàn)異常。注意,剪裁盒功能是基礎(chǔ)渲染器級(jí)別才提供的,更加底層的操作,比如像素格式混合和直接操作緩存,高層次的渲染器是無(wú)從管理的。為了安全起見(jiàn),建議少碰基礎(chǔ)渲染器以下的工具……
閱讀全文
摘要: 基礎(chǔ)渲染器(Base Renderer)是掃描線渲染器的基礎(chǔ),可以說(shuō),正常情況下,你繪畫(huà)任何圖形、做任何事,都需要通過(guò)它。而基礎(chǔ)渲染器需要你以模版的形式提供像素格式的信息,他將會(huì)通過(guò)像素格式混合器來(lái)實(shí)現(xiàn)渲染。其實(shí),基礎(chǔ)渲染器比像素格式混合器多了剪裁盒的功能,其他混合、拷貝什么的和像素格式混合器是相似的,這里就不列出來(lái)了。
閱讀全文
摘要: 渲染緩存保存著一個(gè)個(gè)像素,作為AGG的畫(huà)布。它僅僅是一個(gè)內(nèi)存塊,用來(lái)儲(chǔ)存像素信息,不提供任何繪圖功能,只允許你讀取和修改里面的數(shù)據(jù)。它也不告訴你里面的像素是灰度的、RGB的還是RGBA的,不告訴你從哪里到哪里是一個(gè)像素——它只是用來(lái)管理內(nèi)存數(shù)據(jù)的。
閱讀全文
摘要: AGG分有多種渲染器。在AGG中,渲染器負(fù)責(zé)表現(xiàn)掃描線中的每個(gè)線段。在渲染器之前,AGG圖形中的線段是沒(méi)有顏色值的,只是位置、長(zhǎng)度和 覆蓋率(透明度)。渲染器賦于線段色彩,最終成為一幅完整的圖像。
閱讀全文