OpenGL 4.4/ES 3.0和在过程之间缓存顶点数据



是否可以从顶点着色器中流出顶点数据以供以后使用?我读到DirectX 11能够在绘图时流式传输顶点数据,所以我想知道最新的OpenGL是否也支持类似的功能。我想在渲染过程之间重用相同的顶点数据,而不是每次都重新创建相同的蒙皮顶点数据,这是计算着色器更适合的吗?

转换反馈

来自wiki页面:

变换反馈是捕获由顶点处理步骤,记录来自这些基元的数据进入缓冲区对象

然后您可以稍后再次绘制该数据。可以使用此选项来避免重新蒙皮和重新镶嵌网格。

wiki页面涵盖了足够多的内容,让您开始学习。

要获得全面的概述,您需要查看规范。

可用的教程很不错(至少我看过),而且有点谷歌搜索,很容易找到。

"我已经读到DirectX 11能够流式传输顶点数据

你需要两个线程,一个用于绘图,另一个用于"绘图";流式传输";顶点数据到GPU。

为了实现这一点,您需要有两个OpenGL上下文-http://www.equalizergraphics.com/documentation/parallelOpenGLFAQ.html

更多信息:OpenGL 上的多线程绘制

这一个来自iOS OpenGL ES文档,但概念类似:https://developer.apple.com/library/ios/documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ConcurrencyandOpenGLES/ConcurrencyandOpenGLES.html#//apple_ref/doc/uid/TP40008793-CH409-SW2

"我希望在渲染过程之间重用相同的顶点数据,而不是重新创建"顶点">

看起来你正在寻找VBO:

顶点缓冲区对象(VBO)是用作顶点数组数据源的缓冲区对象。它与任何其他缓冲区对象都没有什么不同,用于"变换反馈"或异步像素传输的缓冲区对象可以用作顶点数组的源值。

  • https://www.opengl.org/wiki/Vertex_Specification
  • 在C++OpenGL中使用顶点缓冲区对象

最新更新