在一个程序中,我打算单独写入大量像素。我猜测使用vbo,着色器和GL_POINTS
并不是很有效。我的想法是在整个屏幕上绘制两个三角形然后写入片段着色器中的每个像素,虽然我不确定它会有多高效?
我正在使用openGL 3,因此没有使用任何已弃用的函数。
答案 0 :(得分:1)
您是否考虑过实例渲染?绘制甚至2个像素大小的三角形可能比绘制点更快。
查看glDrawArraysInstanced
和glVertexAttribDivisor
(应用不同的颜色等)。
如果粒子具有加速度或任何确定性位置变化算法,您甚至可以在顶点着色器中应用此更改以限制相关VBO占用的空间(无需保持位置)和CPU时间(仅限几个)需要GL调用来绘制整个粒子系统的动画。(
)答案 1 :(得分:1)
在新的OpenGL中,您可以绑定FBO with no attachment并使用image output in a fragment shader来实现类似的功能。但是,由于(可能)高度不规则的内存访问模式,可能会导致性能不佳,这在GPU上可能是致命的。但也许你可以获得比光栅化点更好的性能。