是否可以从顶点着色器中流出顶点数据以供以后使用?我读到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中使用顶点缓冲区对象