顏色調製可以讓你改變渲染紋理的顏色。在這裡,我們將使用各種顏色來調製乙個紋理。
class
ltexture
;我們要在紋理包裝器類中新增乙個函式,允許設定紋理調製。它所要做的就是接收乙個紅、綠、藍三色元件。
void ltexture::
setcolor
( uint8 red, uint8 green, uint8 blue )
設定紋理調製就像呼叫sdl_settexturecolormod一樣簡單。你只需傳入你想調製的紋理和你想調製的顏色。
現在顏色調製是如何工作的呢?假設你有這樣的紋理:
然後你用紅色255,綠色128,藍色255來調製它。你最終會得到這樣的結果:
你可能已經注意到 sdl_settexturecolormod 接受 uint8 作為顏色元件的引數。uint8是乙個無符號的8位整數。這意味著它可以從0到255。128大約是0和255之間的一半,所以當你把綠色調製到128時,它會把紋理上任何畫素的綠色分量減半。
紅色和藍色的方塊不會受到影響,因為它們沒有綠色,但綠色的亮度會減半,白色會變成淡淡的洋紅色(洋紅色是紅色255,綠色0,藍色255)。顏色調製只是在整個紋理中乘以一種顏色的方法。
//main loop flag
bool quit =
false
;//event handler
sdl_event e;
//調製成分
uint8 r =
255;
uint8 g =
255;
uint8 b =
255;
這裡是主迴圈之前。在這個演示中,我們將使用按鍵來調製各個顏色元件。要做到這一點,我們需要跟蹤顏色元件的值。
while
(!quit )
//按鍵時改變rgb值
else
if( e.type == sdl_keydown )}}
//clear screen
sdl_setrenderdrawcolor
( grenderer,
0xff
,0xff
,0xff
,0xff);
sdl_renderclear
( grenderer )
;//調製和渲染紋理
gmodulatedtexture.
setcolor
( r, g, b )
; gmodulatedtexture.
render(0
,0);
//update screen
sdl_renderpresent
( grenderer );}
在我們的事件迴圈中,我們會讓q、w和e鍵增加紅、綠、藍三色的分量,讓a、s和d鍵減少紅、綠、藍三色的分量。它們增加/減少32個分量,所以每按一次鍵都會有明顯的變化。
而最後我們設定的是紋理調製和渲染紋理。
SDL程式設計入門(31)滾動背景
通常在遊戲中,你可能想要乙個無限或迴圈的背景。使用滾動背景,你可以迴圈乙個永遠持續下去的背景。比如說,如果我們想在乙個無限的背景上圍繞乙個點移動 我們要做的就是將背景的兩次迭代彼此相鄰渲染,並將它們每幀移動一點。當背景完全移開時,你可以重新設定運動 在本教程中,我們將使用僅保留在螢幕上的純色圓點。螢...
SDL程式設計入門(20)觸力反饋
我們知道了如何用sdl使用操縱桿,現在我們可以使用新的觸覺api來使控制器震動。帶有觸力反饋的遊戲控制器1處理程式 sdl joystick ggamecontroller null sdl haptic gcontrollerhaptic null 觸覺裝置是一種能提供某種物理反饋的東西。在本例中...
SDL程式設計入門(14)動畫精靈和VSync
動畫簡而言之就是展示乙個又乙個的影象來製造運動的假象。在這裡我們將展示不同的精靈來製作乙個簡筆畫的動畫。假設我們有以下動畫幀 這清楚地表明我不是動畫師 而且每隔十分之一秒就顯示乙個,我們會得到這個動畫 由於sdl 2中的影象是典型的sdl textures,所以在sdl中的動畫是乙個接乙個地顯示紋理...