【问题标题】:JOGL FBObject multisamplingJOGL FBObject 多重采样
【发布时间】:2012-12-15 05:03:52
【问题描述】:

我正在使用 JOGL 开发一个简单的 OpenGL 3D 图形引擎。现在,我已经实现了一个简单的渲染管道,它将场景渲染到 FBO 上,然后将其传递给着色器,将 FBO 的颜色纹理渲染到屏幕上,可以选择应用一些后期处理效果,例如模糊。

在不使用 FBO 的情况下,使用 JOGL 很容易实现美观的多重采样。例如,因为我在 Swing 中托管我的 GL 面板,所以我使用 GLJPanel 并像这样创建它,以启用多重采样:

GLCapabilities caps = new GLCapabilities(null);
caps.setSampleBuffers(true);
caps.setNumSamples(8);
GLJPanel gljp = new GLJPanel(caps);

这非常简单,并且会产生漂亮的结果。但是,当必须首先将几何图形绘制到 FBO 时,这并不是很有用。最好的方法是在 FBO 上附加一个 GL_TEXTURE_2D_MULTISAMPLE,渲染场景,然后在第二遍的片段着色器中执行多重采样。

虽然 JOGL 提供了一个相当广泛的 FBObject 类来帮助管理 FBO,但我没有找到一种方法让它渲染到多重采样纹理(它只允许使用 TextureAttachment 对象,这被硬编码为仅适用于 TEXTURE_2D 资源)。因此,我只使用提供的 FBObject 作为骨架,但使用普通 gl.gl* 调用完成大部分工作。我知道这不是 hacky 或任何东西,也许一个“更清洁”的解决方案就是扩展 TextureAttachment 并创建一个专用于多采样纹理的类。

我只是想知道 - 我是否遗漏了什么,或者 JOGL 真的不支持具有多重采样纹理的 FBO?

【问题讨论】:

    标签: java opengl 3d jogl multisampling


    【解决方案1】:

    如果有人在寻找相同的答案,我实际上完全停止使用 FBObjects,我目前正在使用普通的旧 gl.gl* 命令来管理我的帧缓冲区(包括我的新延迟渲染器的 GBuffer)。

    【讨论】:

    • 你能举一个在 jogl 中使用旧 gl 命令的 MSAA 的例子吗?
    • 抱歉回复晚了,但这是我最终实现前向渲染器代码的地方:github.com/AndreiBarsan/Yeti/blob/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多