GL_POINTS在现代硬件上的性能

时间:2013-08-16 13:57:36

标签: opengl 3d gpu

在现代硬件上绘制具有完整三角形(GL_TRIANGLES)的场景而不是仅绘制顶点(GL_POINTS)之间的性能是否存在差异?

GL_POINTS初始化的地方如下:

glPointSize(1.0);
glDisable(GL_POINT_SMOOTH);

我有一个有点低端的显卡(9600gt)和绘图顶点 - 只能在某些风景上增加2倍fps。不确定它是否适用于最近的gpus。

2 个答案:

答案 0 :(得分:2)

  

增加2x fps

你失去了98%的图片,只能增加2倍fps。这并不令人印象深刻。如果你考虑到你应该能够在任何体面的硬件上轻松渲染300..500 fps(禁用vsync和次要优化),那可能不值得。

  

在现代硬件上绘制具有完整三角形(GL_TRIANGLES)的场景而不是仅绘制顶点(GL_POINTS)之间的性能是否存在差异?

好吧,如果你的场景中有很多alpha混合和非常“重”的像素着色器,那么显然,将场景显示为点云会加快速度,因为填充的像素更少。

另一方面,这种“优化”对任何实际任务都是完全无用的。我的意思是,如果您使用混合和着色器,您可能不希望首先将场景显示为点列表,除非您正在进行某种调试渲染(使用glPolygonMode),并且在调试渲染的情况下,您可能会关闭着色器(因为很难看到着色/亮点)并禁用光照。

即使您使用点精灵作为粒子或其他东西,我也会坚持使用三角形 - 它们可以提供更多控制,并且没有最大尺寸限制(与点精灵相比)。

  

我可以显示更多对象吗?

如果你想要更多的对象,你应该先尝试在其他地方优化一些东西。如果你停止尝试绘制不可见的对象(在视野之外等),那将是一个可以提高性能的开始。

  

你有一个离相机很远的网格。 100万个三角形,你知道它总是在视野中。在此密度比下,三角形不能大于像素,

当三角形小于一个像素,并且有很多像素时,你的网格开始看起来像垃圾,变成像素化的乱七八糟的点。这将是丑陋的。与禁用mippimapping和纹理过滤器然后渲染检查板模式时的效果大致相同。使用点而不是三角形甚至可能会加剧效果。

:如果您的1mil三角形网格始终可见,则您需要进行不同类型的优化。减少三角形的数量(细节水平,动态细分或一些可以动态简化几何的解决方案),使用凹凸贴图(可能是视差贴图)来模拟甚至不在这里的额外几何细节,甚至将其转换为静态背景或精灵。那会更好。尝试使用点来渲染它只会让它看起来很难看。

答案 1 :(得分:1)

不,如果在两种模式下三角形的数量与其共享顶点的数量相似(考虑使用glDrawElements渲染命令),渲染管道的几何形状部分将以大致相同的速度进行评估。绘制GL_POINTS可以获得的唯一好处完全取决于从非绘制面获得的空屏幕空间百分比,因此仅在片段着色器级别。

相关问题