是否可以将顶点数据流出顶点着色器以供日后使用?我已经读过DirectX 11能够在绘制时将顶点数据流出来,因此想知道最新的OpenGL是否也支持类似的东西。我想在渲染过程之间重复使用相同的顶点数据,而不是每次都重新创建相同的蒙皮顶点数据,这是计算着色器更适合的吗?
答案 0 :(得分:1)
转型反馈
来自维基页面:
变换反馈是捕获由其生成的基元的过程 顶点处理步骤,记录来自这些原语的数据 进入缓冲对象
然后您可以稍后再次绘制该数据。您可以使用它来避免重新蒙皮并重新细分网格。
wiki page涵盖了足够的理由让你入门。
要获得全面的概述,您需要查看specification。
可用的教程很不错(我至少看过那些)并且有一些googling很容易找到。
答案 1 :(得分:0)
您需要2个线程,一个用于绘图,另一个用于将顶点数据“流式传输”到GPU。
为此,您需要有两个OpenGL上下文 - http://www.equalizergraphics.com/documentation/parallelOpenGLFAQ.html
更多: Multithreaded Rendering on 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)是一个缓冲区对象,用作顶点数组的数据源。它与任何其他缓冲区对象没有区别,用于转换反馈或异步像素传输的缓冲区对象可用作顶点数组的源值。