diff options
author | Jez Ng <me@jezng.com> | 2013-06-17 18:00:44 -0700 |
---|---|---|
committer | Jez Ng <me@jezng.com> | 2013-06-17 18:30:43 -0700 |
commit | 83d1e40dc67587c0eee1a5103ee51cfc435aa91d (patch) | |
tree | 2cdef0c4a216a38526dd58f9d472404cdcdc27f4 /tests/hello_world_sdl.cpp | |
parent | 31f73d04a0f1120746e40b7a35b5d609dbc598ab (diff) |
Fix SDL color encoding.
Little-endian + RGBA means that red is located at the lowest-order bits,
not the highest.
The hello_world_sdl test is now portable, because we no longer write to
individual bytes.
We also add a test for a completely blank screen, which should be black, not
red.
Closes #1287, #761, #765.
Diffstat (limited to 'tests/hello_world_sdl.cpp')
-rw-r--r-- | tests/hello_world_sdl.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/tests/hello_world_sdl.cpp b/tests/hello_world_sdl.cpp index b6401995..eeaad0cd 100644 --- a/tests/hello_world_sdl.cpp +++ b/tests/hello_world_sdl.cpp @@ -2,7 +2,7 @@ #include <SDL/SDL.h> -int main() { +extern "C" int main(int argc, char** argv) { printf("hello, world!\n"); SDL_Init(SDL_INIT_VIDEO); @@ -11,10 +11,8 @@ int main() { if (SDL_MUSTLOCK(screen)) SDL_LockSurface(screen); for (int i = 0; i < 256; i++) { for (int j = 0; j < 256; j++) { - *((char*)screen->pixels + i*256*4 + j*4 + 0) = i; - *((char*)screen->pixels + i*256*4 + j*4 + 1) = j; - *((char*)screen->pixels + i*256*4 + j*4 + 2) = 255-i; - *((char*)screen->pixels + i*256*4 + j*4 + 3) = (i+j)%255; // actually ignored, since this is to the screen + // alpha component is actually ignored, since this is to the screen + *((Uint32*)screen->pixels + i * 256 + j) = SDL_MapRGBA(screen->format, i, j, 255-i, (i+j) % 255); } } if (SDL_MUSTLOCK(screen)) SDL_UnlockSurface(screen); |