Added example of using the software renderer and window surface API, contributed by Nitin Jain.
This commit is contained in:
parent
0754901ca9
commit
17482012af
2 changed files with 109 additions and 0 deletions
|
@ -13,6 +13,7 @@ TARGETS = \
|
||||||
testaudioinfo$(EXE) \
|
testaudioinfo$(EXE) \
|
||||||
testautomation$(EXE) \
|
testautomation$(EXE) \
|
||||||
testdraw2$(EXE) \
|
testdraw2$(EXE) \
|
||||||
|
testdrawchessboard$(EXE) \
|
||||||
testerror$(EXE) \
|
testerror$(EXE) \
|
||||||
testfile$(EXE) \
|
testfile$(EXE) \
|
||||||
testgamecontroller$(EXE) \
|
testgamecontroller$(EXE) \
|
||||||
|
@ -103,6 +104,9 @@ testrelative$(EXE): $(srcdir)/testrelative.c
|
||||||
testdraw2$(EXE): $(srcdir)/testdraw2.c
|
testdraw2$(EXE): $(srcdir)/testdraw2.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
testdrawchessboard$(EXE): $(srcdir)/testdrawchessboard.c
|
||||||
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
testerror$(EXE): $(srcdir)/testerror.c
|
testerror$(EXE): $(srcdir)/testerror.c
|
||||||
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
$(CC) -o $@ $^ $(CFLAGS) $(LIBS)
|
||||||
|
|
||||||
|
|
105
test/testdrawchessboard.c
Normal file
105
test/testdrawchessboard.c
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
/*
|
||||||
|
Copyright (C) 1997-2013 Sam Lantinga <slouken@libsdl.org>
|
||||||
|
|
||||||
|
This software is provided 'as-is', without any express or implied
|
||||||
|
warranty. In no event will the authors be held liable for any damages
|
||||||
|
arising from the use of this software.
|
||||||
|
|
||||||
|
Permission is granted to anyone to use this software for any purpose,
|
||||||
|
including commercial applications, and to alter it and redistribute it
|
||||||
|
freely.
|
||||||
|
|
||||||
|
This file is created by : Nitin Jain (nitin.j4@samsung.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Sample program: Draw a Chess Board by using SDL_CreateSoftwareRenderer API */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include "SDL.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
DrawChessBoard(SDL_Renderer * renderer)
|
||||||
|
{
|
||||||
|
int row = 0,coloum = 0,x = 0;
|
||||||
|
SDL_Rect rect, darea;
|
||||||
|
|
||||||
|
/* Get the Size of drawing surface */
|
||||||
|
SDL_RenderGetViewport(renderer, &darea);
|
||||||
|
|
||||||
|
for(row; row < 8; row++)
|
||||||
|
{
|
||||||
|
coloum = row%2;
|
||||||
|
x = x + coloum;
|
||||||
|
for(coloum; coloum < 4+(row%2); coloum++)
|
||||||
|
{
|
||||||
|
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
|
||||||
|
|
||||||
|
rect.w = darea.w/8;
|
||||||
|
rect.h = darea.h/8;
|
||||||
|
rect.x = x * rect.w;
|
||||||
|
rect.y = row * rect.h;
|
||||||
|
x = x + 2;
|
||||||
|
SDL_RenderFillRect(renderer, &rect);
|
||||||
|
}
|
||||||
|
x=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
SDL_Event event;
|
||||||
|
|
||||||
|
/* Initialize SDL */
|
||||||
|
if(SDL_Init(SDL_INIT_VIDEO) != 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"SDL_Init fail : %s\n", SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Create window and renderer for given surface */
|
||||||
|
SDL_Window *window = SDL_CreateWindow("Chess Board",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,640,480,SDL_WINDOW_SHOWN);
|
||||||
|
if(!window)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"Window creation fail : %s\n",SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
SDL_Surface *surface = SDL_GetWindowSurface(window);
|
||||||
|
SDL_Renderer *renderer = SDL_CreateSoftwareRenderer(surface);
|
||||||
|
if(!renderer)
|
||||||
|
{
|
||||||
|
fprintf(stderr,"Render creation for surface fail : %s\n",SDL_GetError());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Clear the rendering surface with the specidfied colour */
|
||||||
|
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0);
|
||||||
|
SDL_RenderClear(renderer);
|
||||||
|
|
||||||
|
|
||||||
|
/* Draw the Image on rendering surface */
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
SDL_Event e;
|
||||||
|
if (SDL_PollEvent(&e)) {
|
||||||
|
if (e.type == SDL_QUIT)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if(e.key.keysym.sym == SDLK_ESCAPE)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
DrawChessBoard(renderer);
|
||||||
|
|
||||||
|
/* Got everything on redering surface,
|
||||||
|
now Update the drawing image on window screen */
|
||||||
|
SDL_UpdateWindowSurface(window);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue