gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:58:54 25 4
gpt4 key购买 nike

这个在 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 指出的那样,不要每帧都创建(并泄漏)SDL_Renderer
  • 使用SDL_PollEvent()在循环中完全耗尽事件队列。
  • SDL_SetRenderDrawColor() 影响 SDL_RenderClear() 以及 SDL_RenderDrawLine();正如人们想象的那样,黑底黑字很难看清 :) 在尝试画线之前设置更明显的颜色。
  • 可能应该将 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;
}

关于c++ - 无法弄清楚为什么没有在 SDL 中绘制线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64162722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com