【发布时间】:2023-03-18 13:49:01
【问题描述】:
我学习 SDL 2D 编程已经有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的:
SDL_Init(SDL_INIT_VIDEO);
window = SDL_CreateWindow("SDL and OpenGL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, width, height, SDL_WINDOW_OPENGL);
context = SDL_GL_CreateContext(window);
该程序现在只是一个黑色窗口,使用 OpenGL 显示一条白线。下面是渲染代码:
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_LINES);
glVertex2d(1, 0);
glVertex2d(-1, 0);
glEnd();
SDL_GL_SwapWindow(window);
所以问题是,我想另外使用纯 SDL 和 SDL_Renderer 对象来渲染纹理,就像我之前在没有 OpenGL 的情况下所做的那样。我试过了,但没有用。甚至有可能做到这一点以及如何做到这一点?我所做的是创建一个 SDL_Renderer,然后在绘制 OpenGL 的东西之后这样做:
SDL_Rect fillRect;
fillRect.w = 50;
fillRect.h = 50;
fillRect.x = 0;
fillRect.y = 0;
SDL_SetRenderDrawColor(renderer, 100, 200, 100, 0);
SDL_RenderFillRect(renderer, &fillRect);
SDL_RenderPresent(renderer);
但这不起作用。矩形未显示,尽管在几毫秒内它会略微出现。我觉得 OpenGL 渲染正在覆盖它。
【问题讨论】:
-
不要将 SDL 渲染器的东西和 OpenGL 混用,这条路会充满痛苦和疯狂。至少at this point in time.
-
好的,所以这是不可能的。太糟糕了。
标签: c++ opengl rendering sdl sdl-2