SDL程式設計入門(12)色彩調製

2021-10-09 14:49:17 字數 1716 閱讀 4649

顏色調製可以讓你改變渲染紋理的顏色。在這裡,我們將使用各種顏色來調製乙個紋理。

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中的動畫是乙個接乙個地顯示紋理...