Моя цель - создать шум, сделать рендеринг с помощью шейдера на кадровом буфере и вытянуть данные на CPU. Мне не нужно делать дальнейший рендеринг с opengl в цикле, он мне нужен только один раз, в начале.
Я загружаю рад после инициализации моего окна SFML, и мой код opengl работает нормально и работает как положено.
Проблема заключается в том, чтобы снова рисовать вещи с помощью SFML после выполнения вызовов opengl.
Я прочитал пример и учебное пособие, но не понимаю, что происходит не так ...
Я использую свою собственную копию gladc / glad.h для инициализации opengl.
window->setActive(true);
{
if (!gladLoadGLLoader(reinterpret_cast<GLADloadproc>(sf::Context::getFunction)))
//if (!gladLoadGL())
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
ourShader = gl_things::Shader("shaders/quad.vs", "shaders/perlin2.fs");
init_geom();
init_framebuffer();
pull();
}
window->setActive(false);
window->resetGLStates();
Когда я рисую прямоугольник SFML, возникает исключение
void draw() {
window->pushGLStates();
window->draw(dadaism);
window->popGLStates();
}
IМне интересно, возможно ли на самом деле использовать OpenGL, как я делаю. Важной деталью является то, что я использую opengl, потому что мне нужно объявить текстуру как GL_FLOAT, чтобы ее можно было потом вернуть. SFML не может сделать это самостоятельно.