简体   繁体   English

如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?

[英]How to draw SDL 2D rectangles over a 3D OpenGL scene?

I'm trying to overlay small interactive info rectangles drawn with SDL 2D over a 3D scene drawn with OpenGL.我正在尝试将使用 SDL 2D 绘制的小型交互式信息矩形覆盖在使用 OpenGL 绘制的 3D 场景上。 Each of itself works, but not together.每个人都可以工作,但不能一起工作。 The 3D model is then hidden.然后隐藏 3D model。

SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);

SDL_CreateWindowAndRenderer(m_width, m_height, SDL_WINDOW_OPENGL|SDL_WINDOW_RESIZABLE, &m_window, &m_renderer);
SDL_GLContext context = SDL_GL_CreateContext(m_window);
SDL_RenderClear(m_renderer);
SDL_RenderPresent(m_renderer);

// load vertex, fragmend shader...

glClearColor(1.0, 1.0, 1.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDrawElements(GL_TRIANGLES, m_indicesSize, GL_UNSIGNED_INT, BUFFER_OFFSET(0));

SDL_Rect rect;
rect.w = 50;
rect.h = 50;
rect.x = 100;
rect.y = 100;

SDL_SetRenderDrawColor(m_renderer, 255, 0, 0, 255);
SDL_RenderFillRect(m_renderer, &rect);
SDL_RenderPresent(m_renderer);

How can I solve this problem?我怎么解决这个问题? Thxs..谢谢..

You don't, at least for now.你不知道,至少现在是这样。

Here's the (open) bug about adding backend API state getters/setters to SDL_Renderer.这是关于将后端 API state getter/setter 添加到 SDL_Renderer 的(开放)错误。 . .

Alternatively, create a SDL_Renderer instance that uses the software renderer & upload the bitmaps coming out of that into a OpenGL texture & composite that into your scene.或者,创建一个使用软件渲染器的 SDL_Renderer 实例,并将由此产生的位图上传到 OpenGL 纹理中,并将其合成到您的场景中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM