我的目标是创建噪声,在帧缓冲区上使用着色器渲染并在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无法单独执行此操作。