无法弄清楚为什么没有在 SDL 中绘制线条
Can't figure out why line is not being drawn in SDL
这个在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;
}
相关文章:
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- 三角形未绘制.C++/GLEW/SDL.
- SDL中的绘制具有不同的alpha值
- SDL 2,如何使用事件系统和异步绘制
- 即使 OpenGL、SDL 和 GLSL 都没有抛出错误,也没有绘制多边形
- 如何在SDL中绘制多边形
- OpenGL + SDL + glew 在成功初始化后不会绘制任何内容
- SDL 不绘制图像
- C++ SDL 根据鼠标位置绘制动态矩形
- 在窗口上绘制 PNG 图像 - C++ SDL 2.0
- SDL 只会在尝试打印图片C++时绘制黑屏
- 如何在不使用外部库的情况下使用SDL绘制直线
- SDL:程序运行正常;仅绘制两行像素
- 如何使用 SDL 2 和 C++ 绘制椭圆的填充扇区
- 通过按住鼠标按钮绘制SDL/c++
- 在 SDL 中,当我在屏幕上绘制菜单时,它会使游戏变慢并且无法正常工作,我该如何解决这个问题?
- 用SDL绘制图形
- 使用openGL/SDL绘制点
- 使用SDL在OpenGL表面上绘制文本
- C++ & SDL:没有错误,但图像不会绘制