Day 38 complete.
This commit is contained in:
+18
-3
@@ -110,8 +110,21 @@ static void DrawBitmap(game_offscreen_buffer *Buffer, loaded_bitmap *Bitmap, F32
|
|||||||
U32 *Dest = (U32 *)DestRow;
|
U32 *Dest = (U32 *)DestRow;
|
||||||
U32 *Source = SourceRow;
|
U32 *Source = SourceRow;
|
||||||
for(S32 X = MinX; X < MaxX; X++) {
|
for(S32 X = MinX; X < MaxX; X++) {
|
||||||
if((*Source >> 24) > 128)
|
F32 A = (F32)((*Source >> 24) & 0xFF) / 255.0f;
|
||||||
*Dest = *Source;
|
F32 SR = (F32)((*Source >> 16) & 0xFF);
|
||||||
|
F32 SG = (F32)((*Source >> 8) & 0xFF);
|
||||||
|
F32 SB = (F32)((*Source >> 0) & 0xFF);
|
||||||
|
|
||||||
|
F32 DR = (F32)((*Dest >> 16) & 0xFF);
|
||||||
|
F32 DG = (F32)((*Dest >> 8) & 0xFF);
|
||||||
|
F32 DB = (F32)((*Dest >> 0) & 0xFF);
|
||||||
|
|
||||||
|
// TODO: This should be replaced by premultiplied alpha.
|
||||||
|
F32 R = (1.0f-A)*DR + A*SR;
|
||||||
|
F32 G = (1.0f-A)*DG + A*SG;
|
||||||
|
F32 B = (1.0f-A)*DB + A*SB;
|
||||||
|
|
||||||
|
*Dest = (((U32)RoundF32toS32(R) << 16) | ((U32)RoundF32toS32(G) << 8) | ((U32)RoundF32toS32(B) << 0));
|
||||||
|
|
||||||
Dest++;
|
Dest++;
|
||||||
Source++;
|
Source++;
|
||||||
@@ -160,6 +173,8 @@ static loaded_bitmap DEBUGLoadBMP(thread_context *Thread, debug_read_file_result
|
|||||||
Result.Width = Header->Width;
|
Result.Width = Header->Width;
|
||||||
Result.Height = Header->Height;
|
Result.Height = Header->Height;
|
||||||
|
|
||||||
|
ASSERT(Header->Compression == 3);
|
||||||
|
|
||||||
// NOTE: The byte order in memory is determined by the Header.
|
// NOTE: The byte order in memory is determined by the Header.
|
||||||
|
|
||||||
U32 RedMask = Header->RedMask;
|
U32 RedMask = Header->RedMask;
|
||||||
@@ -456,7 +471,7 @@ void UpdateAndRender(thread_context *Thread, game_memory *Memory, game_input *In
|
|||||||
F32 PlayerB = 0.0f;
|
F32 PlayerB = 0.0f;
|
||||||
F32 PlayerLeft = ScreenCenterX - 0.5f * MetersToPixels*PlayerWidth;
|
F32 PlayerLeft = ScreenCenterX - 0.5f * MetersToPixels*PlayerWidth;
|
||||||
F32 PlayerTop = ScreenCenterY - MetersToPixels*PlayerHeight;
|
F32 PlayerTop = ScreenCenterY - MetersToPixels*PlayerHeight;
|
||||||
//DrawRectangle(Buffer, PlayerLeft, PlayerTop, PlayerLeft + MetersToPixels*PlayerWidth, PlayerTop + MetersToPixels*PlayerHeight, PlayerR, PlayerG, PlayerB);
|
DrawRectangle(Buffer, PlayerLeft, PlayerTop, PlayerLeft + MetersToPixels*PlayerWidth, PlayerTop + MetersToPixels*PlayerHeight, PlayerR, PlayerG, PlayerB);
|
||||||
DrawBitmap(Buffer, &GameState->HeroHead, PlayerLeft, PlayerTop);
|
DrawBitmap(Buffer, &GameState->HeroHead, PlayerLeft, PlayerTop);
|
||||||
|
|
||||||
GameOutputSound(GameState, SoundBuffer, 400);
|
GameOutputSound(GameState, SoundBuffer, 400);
|
||||||
|
|||||||
Reference in New Issue
Block a user