0

我的目标是创建噪声,在帧缓冲区上使用着色器进行渲染,并在 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 自己无法做到这一点。

图片

4

0 回答 0