【问题标题】:Render to texture using only OpenGL Context ID (Java)仅使用 OpenGL 上下文 ID (Java) 渲染到纹理
【发布时间】:2018-06-17 08:35:07
【问题描述】:

我们需要渲染整个游戏窗口的纹理。我们的客户端只有 java SDK jar,我们只能访问它们在游戏运行时创建的窗口的 OpenGL Window 上下文 ID。

我的问题是,窗口上下文是否足以以某种方式将其渲染为纹理?

我们不能更改客户端的代码,但我们需要在其 java SDK 之上呈现编辑器窗口。

他们使用 LWJGL 进行渲染。计划是将游戏渲染到单独的窗口中,类似这样:

我想这只能通过提到的渲染到纹理来实现。

【问题讨论】:

    标签: java opengl editor render-to-texture


    【解决方案1】:

    如果您可以使用常规的 openGL 命令,那么您可能会做一些事情。 问题是您需要更改 openGL 的状态机,这可能会与他们的游戏正在做的事情勾结。

    一件事可能会奏效,但又可能与他们正在做的事情发生冲突。 由于您想显示它们的最终输出,因此可以肯定的是它们正在渲染到默认帧缓冲区。因此,您创建自己的带有纹理颜色附件的帧缓冲区,并使用glBlitFramebuffer 将默认帧缓冲区blit 到您自己的帧缓冲区中。这样,您应该将默认帧缓冲区放入纹理中。 为此,您需要在 blitting 之前执行 glBindFramebuffer(GL_READ_FRAMEBUFFER, 0)glBindFramebuffer(GL_DRAW_FRAMEBUFFER, **your buffer**) 以设置操作目标。

    由于我不知道您是否可以为每一帧编写代码,我不确定这是否可行,但可能值得一试。

    【讨论】:

    • 谢谢,这可能会奏效。问题是,我们必须创建自己的线程,因为我们刚刚开始他们的 main(),这会用他们的 while(true) 循环阻塞我们。但是 OpenGL 不是线程安全的,所以我们现在不太确定如何进入他们的主线程以使用 OpenGL。
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2012-06-03
    • 2014-07-22
    • 2013-10-05
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多