Wiki Page Content

Differences between revisions 3 and 4
Revision 3 as of 2011-06-29 23:36:21
Size: 818
Editor: SheenaSmith
Comment: update content for consistency - add SDL_GetError() to NULL RVs
Revision 4 as of 2015-05-25 11:32:27
Size: 3036
Editor: nitin.j4
Comment: Add Source code example for SDL_CreateSoftwareRenderer and Remark
Deletions are marked like this. Additions are marked like this.
Line 22: Line 22:
You can add your code example here #include "SDL.h"

SDL_Window *window;
SDL_Renderer *renderer;
int done;

void
DrawChessBoard(SDL_Renderer * renderer)
{
 int row = 0,column = 0,x = 0;
 SDL_Rect rect, darea;

 /* Get the Size of drawing surface */
 SDL_RenderGetViewport(renderer, &darea);

 for( ; row < 8; row++)
 {
  column = row%2;
  x = x + column;
  for( ; column < 4+(row%2); column++)
  {
   SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0xFF);

   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;
 }
}

void
loop()
{
    SDL_Event e;
 if (SDL_PollEvent(&e)) {
  if (e.type == SDL_QUIT) {
   done = 1;
   return;
  }

  if(e.key.keysym.sym == SDLK_ESCAPE) {
   done = 1;
   return;
  }
 }
 
 DrawChessBoard(renderer);
 
 /* Got everything on rendering surface,
    now Update the drawing image on window screen */
 SDL_UpdateWindowSurface(window);
}

int
main(int argc, char *argv[])
{
 SDL_Surface *surface;

    /* Enable standard application logging */
    SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);

 /* Initialize SDL */
 if(SDL_Init(SDL_INIT_VIDEO) != 0)
 {
  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_Init fail : %s\n", SDL_GetError());
  return 1;
 }


 /* Create window and renderer for given surface */
 window = SDL_CreateWindow("Chess Board", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);
 if(!window)
 {
  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window creation fail : %s\n",SDL_GetError());
  return 1;
 }
 surface = SDL_GetWindowSurface(window);
 renderer = SDL_CreateSoftwareRenderer(surface);
 if(!renderer)
 {
  SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Render creation for surface fail : %s\n",SDL_GetError());
  return 1;
 }

 /* Clear the rendering surface with the specified color */
 SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
 SDL_RenderClear(renderer);


 /* Draw the Image on rendering surface */
 done = 0;

    while (!done) {
        loop();
 }

 return 0;
}
Line 26: Line 127:
''You can add useful comments here'' ''Two other API which can be used to create SDL_Renderer:<<BR>>1) [[SDL_CreateRenderer]]<<BR>>2) [[SDL_CreateWindowAndRenderer]]''

SDL_CreateSoftwareRenderer

Use this function to create a 2D software rendering context for a surface.

Syntax

SDL_Renderer* SDL_CreateSoftwareRenderer(SDL_Surface* surface)

Function Parameters

surface

the SDL_Surface structure representing the surface where rendering is done

Return Value

Returns a valid rendering context or NULL if there was an error; call SDL_GetError() for more information.

Code Examples

#include "SDL.h"

SDL_Window *window;
SDL_Renderer *renderer;
int done;

void
DrawChessBoard(SDL_Renderer * renderer)
{
        int row = 0,column = 0,x = 0;
        SDL_Rect rect, darea;

        /* Get the Size of drawing surface */
        SDL_RenderGetViewport(renderer, &darea);

        for( ; row < 8; row++)
        {
                column = row%2;
                x = x + column;
                for( ; column < 4+(row%2); column++)
                {
                        SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0xFF);

                        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;
        }
}

void
loop()
{
    SDL_Event e;
        if (SDL_PollEvent(&e)) {
                if (e.type == SDL_QUIT) {
                        done = 1;
                        return;
                }

                if(e.key.keysym.sym == SDLK_ESCAPE) {
                        done = 1;
                        return;
                }
        }
        
        DrawChessBoard(renderer);
        
        /* Got everything on rendering surface,
           now Update the drawing image on window screen */
        SDL_UpdateWindowSurface(window);
}

int
main(int argc, char *argv[])
{
        SDL_Surface *surface;

    /* Enable standard application logging */
    SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);

        /* Initialize SDL */
        if(SDL_Init(SDL_INIT_VIDEO) != 0)
        {
                SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDL_Init fail : %s\n", SDL_GetError());
                return 1;
        }


        /* Create window and renderer for given surface */
        window = SDL_CreateWindow("Chess Board", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);
        if(!window)
        {
                SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Window creation fail : %s\n",SDL_GetError());
                return 1;
        }       
        surface = SDL_GetWindowSurface(window);
        renderer = SDL_CreateSoftwareRenderer(surface);
        if(!renderer)
        {
                SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Render creation for surface fail : %s\n",SDL_GetError());
                return 1;
        }

        /* Clear the rendering surface with the specified color */
        SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
        SDL_RenderClear(renderer);


        /* Draw the Image on rendering surface */
        done = 0;

    while (!done) {
        loop();
        }

        return 0;
}

Remarks

Two other API which can be used to create SDL_Renderer:
1) SDL_CreateRenderer
2) SDL_CreateWindowAndRenderer


CategoryAPI, CategoryRender

None: SDL_CreateSoftwareRenderer (last edited 2016-03-31 22:22:10 by PhilippWiesemann)

(Page Info.)
Feedback
Please include your contact information if you'd like to receive a reply.
Submit