无法弄清楚为什么没有在 SDL 中绘制线条

Can't figure out why line is not being drawn in SDL

本文关键字:SDL 绘制 弄清楚 为什么      更新时间:2024-05-24

这个在SDL中画线的程序不起作用:

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

当我运行程序时,我没有得到任何错误,但也没有绘制任何内容。

几个问题:

  • 您缺少一个SDL_RenderPresent(),因此屏幕上实际上没有任何内容
  • 正如@tkausl所指出的,不要在每帧创建(&leak(SDL_Renderer
  • 在循环中使用SDL_PollEvent()以完全耗尽事件队列
  • CCD_ 3对CCD_ 4和CCD_;正如人们可能想象的那样,黑对黑有点难看:(在画线之前,先设定一个更显眼的颜色
  • 可能应该将a = 255传递给SDL_SetRenderDrawColor()

全部:

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