This program to draw a line in SDL is not working:
#include "SDL.h"
int main(int argc, char** argv)
{
SDL_Window* window = SDL_CreateWindow("A line", 10, 10, 1200, 600, false);
bool running = true;
while (running)
{
SDL_Event events;
if (SDL_WaitEvent(&events))
if (events.type == SDL_QUIT)
running = false;
SDL_Renderer* renderer;
renderer = SDL_CreateRenderer(window, -1, 0);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderDrawLine(renderer, 10, 10, 500, 500);
}
SDL_Quit();
return 1;
}
When I run the program, I don't get any error, but nothing is drawn either.
@Cool_Cornflakes, a few issues:
SDL_RenderPresent()
so nothing is ever actually drawn to the screen.SDL_PollEvent()
in a loop to fully drain the event queue.SDL_SetRenderDrawColor()
affects SDL_RenderClear()
as well as SDL_RenderDrawLine()
; as one might imagine black-on-black is kinda hard to see :) Set a more visible color before trying to draw a line.a = 255
to SDL_SetRenderDrawColor()
.All together:
// g++ main.cpp `pkg-config --cflags --libs sdl2`
#include "SDL.h"
int main(int argc, char** argv)
{
SDL_Window* window = SDL_CreateWindow("A line", 10, 10, 1200, 600, false);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
bool running = true;
while (running)
{
SDL_Event event;
while( SDL_PollEvent(&event) )
{
if (event.type == SDL_QUIT)
running = false;
}
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderDrawLine(renderer, 10, 10, 500, 500);
SDL_RenderPresent( renderer );
}
SDL_Quit();
return 1;
}