我的目标是创建噪声,在帧缓冲区上使用着色器进行渲染,并在 CPU 上提取数据。我不需要在循环中使用 opengl 进行进一步渲染,我只需要一次,一开始。
初始化我的 SFML 窗口后,我很高兴,我的 opengl 代码工作正常并且按预期工作。
问题是在完成 opengl 调用之后再次使用 SFML 绘制东西。
我已经阅读了示例和教程,但我不明白出了什么问题......
我使用我自己的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();
}
我想知道是否真的可以像我一样使用opengl。一个重要的细节是我正在使用 opengl,因为我需要将纹理声明为 GL_FLOAT 以便之后可以将其拉回。SFML 自己无法做到这一点。