gpt4 book ai didi

java - 是否可以在非主线程中创建 openGL VBO/显示列表

转载 作者:太空宇宙 更新时间:2023-11-04 07:13:32 24 4
gpt4 key购买 nike

我有一个无限生成的世界,运行得非常好。每次生成新 block 时,它的高度图都会在第二个线程中生成。但是创建显示列表是不可能的,因为除了主线程之外,任何线程中都“没有 GLContext”。这意味着每次生成新 block 时都会有一个小的滞后尖峰,当同时生成几个 block 时,该滞后尖峰就会变得明显。

我要问的是是否有一种方法可以在另一个线程中创建显示列表或顶点缓冲区对象,然后将其绑定(bind)或在主线程中进行绑定(bind)?

我已经用 VBO 尝试过,但与显示列表相比速度非常慢。

最佳答案

一种可能更简单的方法是使用第二个线程在内存中生成 VBO 数据,然后使用异步数据从主线程传输到 GPU(使用现在无处不在的 GL_ARB_pixel_buffer_object )。

现在从 VBO 渲染数据应该相当快。请务必使用 glDrawElementsglMultiDrawElementsglPrimitiveRestartIndex 以及系列的其余部分,以最大程度地减少绘制调用的数量。那么根本不需要显示列表。

关于java - 是否可以在非主线程中创建 openGL VBO/显示列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20301337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com