loki: added color gradiant
This commit is contained in:
parent
95a6777ebd
commit
468b5dc71f
@ -0,0 +1,80 @@
|
|||||||
|
/* Example of direct pixel access with SDL. */
|
||||||
|
|
||||||
|
#include <SDL/SDL.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
Uint16 CreateHicolorPixel(SDL_PixelFormat * fmt, Uint8 red,
|
||||||
|
Uint8 green, Uint8 blue)
|
||||||
|
|
||||||
|
{
|
||||||
|
Uint16 value;
|
||||||
|
|
||||||
|
/* This series of bit shifts uses the information from the SDL_Format structure
|
||||||
|
* to correctly compose a 16-bit pixel value from 8-bit red, green, and blue data
|
||||||
|
*/
|
||||||
|
value = ((red >> fmt->Rloss) << fmt->Rshift) +
|
||||||
|
((green >> fmt->Gloss) << fmt->Gshift) +
|
||||||
|
((blue >> fmt->Bloss) << fmt->Bshift);
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
SDL_Surface *screen;
|
||||||
|
Uint16 *raw_pixels;
|
||||||
|
int x, y;
|
||||||
|
|
||||||
|
/* Initialize SDL's video system and check for errors. */
|
||||||
|
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||||||
|
printf("Unable to initialize SDL: %s\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
atexit(SDL_Quit);
|
||||||
|
|
||||||
|
/* Attempt to set a 256x256 hicolor */
|
||||||
|
screen = SDL_SetVideoMode(256, 256, 16, 0);
|
||||||
|
if (screen == NULL) {
|
||||||
|
printf("Unable to set video mode: %s\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Video memory can be strange, and it's sometimes necessary
|
||||||
|
* to "lock it before it can be modified, SDL abstracts this
|
||||||
|
* with the SDL_LockSurface function. */
|
||||||
|
SDL_LockSurface(screen);
|
||||||
|
|
||||||
|
/* Get a pointer to the video surface's memory. */
|
||||||
|
raw_pixels = (Uint16 *) screen->pixels;
|
||||||
|
|
||||||
|
/* We can now safely write to the video surface. We'll draw
|
||||||
|
* a nice gradient patern by varying our red and blue components
|
||||||
|
* along the X and Y axes. Notice the forumula used to calculate
|
||||||
|
* the offset into the framebuffer for each pixel.
|
||||||
|
* (The pitch is the number of bytes per scanline in memory.) */
|
||||||
|
|
||||||
|
for (x=0; x < 256; x++) {
|
||||||
|
for (y=0; y < 256; y++) {
|
||||||
|
Uint16 pixel_color;
|
||||||
|
int offset;
|
||||||
|
pixel_color = CreateHicolorPixel(screen->format,
|
||||||
|
x, 0, y);
|
||||||
|
offset = (screen->pitch /2 * y + x);
|
||||||
|
raw_pixels[offset] = pixel_color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* We're finished drawing, so unlock the surface. */
|
||||||
|
SDL_UnlockSurface(screen);
|
||||||
|
|
||||||
|
/* Inform SDL that the screen has been chnaged. This is
|
||||||
|
* necessary because SDL's screen surface is not always the real
|
||||||
|
* framebuffer; it is sometimes emulated behind the scenes. */
|
||||||
|
SDL_UpdateRect(screen, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
/* Pause for a few seconds as the viewer gasps in awe. */
|
||||||
|
SDL_Delay(3000);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
32
loki_sample/init_sdl_example/initializing-sdl.c
Normal file
32
loki_sample/init_sdl_example/initializing-sdl.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* Example of initializing SDL. */
|
||||||
|
|
||||||
|
#include <SDL/SDL.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
SDL_Surface *screen;
|
||||||
|
|
||||||
|
/* Initialize SDL's video system and check for errors */
|
||||||
|
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
|
||||||
|
printf("Unable to initialize SDL: %s\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Make sure SDL_Quit gets called when the program exits! */
|
||||||
|
atexit(SDL_Quit);
|
||||||
|
|
||||||
|
/* Attempt to set a 650x480 hicolor video mode */ // I uped it a bit cuz fuck that.
|
||||||
|
screen = SDL_SetVideoMode(1024, 768, 32, SDL_FULLSCREEN);
|
||||||
|
if (screen == NULL) {
|
||||||
|
printf("Unable to set video mode: %s\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we got this far, everything worked */
|
||||||
|
printf("Success!\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
}
|
@ -18,3 +18,7 @@ main loop >> Just a while loop that runs the entire time anywhere from 30 to 60
|
|||||||
seperating meu system from main loop is good, but can complicate the code
|
seperating meu system from main loop is good, but can complicate the code
|
||||||
Networking information should usually be grabed first
|
Networking information should usually be grabed first
|
||||||
Graphics should be usually grabed last
|
Graphics should be usually grabed last
|
||||||
|
|
||||||
|
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
|
||||||
|
-lSDL -lpthread
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user