Как рисовать 2D-прямоугольники SDL на 3D-сцене OpenGL? - PullRequest
1 голос
/ 16 июня 2020

Я пытаюсь наложить небольшие интерактивные информационные прямоугольники, нарисованные с помощью SDL 2D, на 3D-сцену, нарисованную с помощью OpenGL. Каждый работает сам по себе, но не вместе. Затем 3D-модель скрывается.

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);

Как я могу решить эту проблему? Спасибо ..

1 Ответ

2 голосов
/ 17 июня 2020

У вас нет, по крайней мере, сейчас.

Вот (открытая) ошибка при добавлении геттеров / сеттеров состояния API-интерфейса в SDL_Renderer. .

Альтернативно , создайте экземпляр SDL_Renderer, который использует программный рендерер, и загрузите полученные растровые изображения в текстуру и композицию OpenGL, которые будут помещены в вашу сцену.

...