gpt4 book ai didi

c++ - 一万个单位圆以上,如何画出高性能?

转载 作者:可可西里 更新时间:2023-11-01 10:06:06 24 4
gpt4 key购买 nike

问题:
在 3D 空间中,有很多点。我需要在每个点的位置画一个单位圆。并且所有圆圈的法线应该始终垂直于设备的屏幕并且大小不是改变了,即使我旋转或放大/缩小 View 。 enter image description here

我的方法:

起初我有一个大数组来存储每个点的xyz坐标。

for each point in the array:
apply a model view matrix // to keep the normal perpendicular and the same size
draw a unit circle with gl* functions

通过这种方法,当点数达到 10000 时,我得到一个非常糟糕的 FPS。这是非常低效的。有没有更好的方法来解决这个问题?或者一些 OpenGL技术可以用吗?

最佳答案

你可以画出它们instanced (自 3.3 或扩展 ARB_instanced_arrays 起可用)

您准备了一个用于绘制的单位圆(使用单独的属性作为您添加到顶点着色器中的点的位置)

每个点的位置放在一个单独的 VBO 中,你用

指定除数
void glVertexAttribDivisor​(GLuint index​, GLuint divisor​);

然后你使用

void glDrawArraysInstanced​( GLenum mode​, GLint first​, GLsizei count​, GLsizei instancecount​);

计算中的顶点数和instancecount点数

关于c++ - 一万个单位圆以上,如何画出高性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23513559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com