我正在開發SDL 2.0中的2D遊戲,並且我的照明系統有問題。我想用霧氣填滿屏幕,並在玩家周圍創建一個透明的圓圈(左下角)。我知道如何使用SDL_BLENDMODE_MOD(右下)創建帶有淺色燈光的暗室,但我無法制作霧。我已經嘗試過使用SDL_SetRenderDrawBlendMode()和SDL_SetTextureBlendMode()我可以想到的每種組合在屏幕上分層的多個紋理。SDL2 - 在紋理上繪製全透明圓圈
我已經搜查,發現解決方案在計算器上一樣this,但他們使用SDL表面和預製的光圖像。我將會動態地改變我的輸入圖像的形狀和大小(右上角),所以我需要更靈活的東西。
解決方案1:我使用黑色圓圈和海軍背景,而不是白色圓圈和黑色背景。然後我使用screen blending來混合這個,並獲得我的霧(我已經在圖像編輯器中測試了這個以獲得左下圖像)。不幸的是,SDL沒有SDL_BLENDMODE_SCREEN。
解決方案2:創建一個半透明霧層和在其衝壓一個完全透明的孔。不幸的是,我不知道如何用透明的洞覆蓋紋理。我試圖將我的drawing mode設置爲SDL_BLENDMODE_NONE並繪製一個完全透明的圓,但它只會創建完全不透明的圓。文檔說我可以代替目的地阿爾法,但似乎並沒有工作......
如何存放在紋理的Alpha值的圖像?我知道如何將RenderCopy()紋理映射到另一個紋理,但我不知道如何訪問紋理的Alpha通道。 – DragonDePlatino