渲染到opengl帧缓冲区后无法在SFML中渲染

时间:2019-10-12 15:34:25

标签: c++ opengl sfml framebuffer glad

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

image

0 个答案:

没有答案