SDL對(duì)接2D渲染庫
????最近玩了幾個(gè)2D渲染庫,有老牌的cairo,大名鼎鼎的skia,還有blend2d。其中blend2d比較有意思,只支持軟渲染,就是只用CPU不用GPU,在現(xiàn)在一堆爭著用GPU的渲染庫里算是比較奇葩的;還有就是用了asmjit,這點(diǎn)就比較有意思,官網(wǎng)的描述是“利用內(nèi)置的 JIT 編譯器在運(yùn)行時(shí)生成優(yōu)化的管道,并且能夠使用多線程來提升性能”。
????至于對(duì)接渲染結(jié)果到SDL,我用的方法都是先渲染到內(nèi)存里的位圖緩沖區(qū)bitmap里,然后把bitmap復(fù)制到SDL的Texture里,最后提交到窗口的Render里顯示。因?yàn)镾DL的Texture緩存貌似是在顯存里,讀寫前還需要先”固定“,不方便跟渲染庫對(duì)接。而且我想在程序的整個(gè)生命周期都只渲染到一個(gè)塊內(nèi)存里,不想每次渲染都走[申請(qǐng)內(nèi)存]-[讀寫]-[銷毀內(nèi)存]這套流程。

????上圖只用了一個(gè)Texture,SDL支持多個(gè)Texture疊加到窗口,所以可以同時(shí)渲染多個(gè)Texture,最后圖層疊加、拼接或者是切換顯示某個(gè)Texture。