在 Vbo 中显示具有不同点大小的网格?

Posted

技术标签:

【中文标题】在 Vbo 中显示具有不同点大小的网格?【英文标题】:Displaying Mesh in Vbo with different point sizes? 【发布时间】:2013-06-01 14:30:03 【问题描述】:

我正在尝试在 openFrameworks 中将网格显示为带有 Vbo 的点。

我希望所有的点都有不同的大小,有没有办法做到这一点?

【问题讨论】:

【参考方案1】:

如果您使用的是顶点着色器,则可以轻松实现。具体来说,您可以将gl_PointSize 设置为顶点着色器中每个顶点的唯一值

void main()

    gl_PointSize = <value>;
    // ...

如果您知道每个顶点所需的值,则可以将其作为附加顶点属性传递,或者您可以从函数生成它。如果您想随机设置点大小,这可能有用或分散注意力,具体取决于您在做什么,您可以尝试使用noise GLSL 函数,或者如果noise 不支持,请检查this answer about generating random numbers in GLSL shaders您正在使用的 GLSL(例如,如果您正在使用 WebGL)。

【讨论】:

这是一个很好的答案,它节省了我很多本来可以花在探索上的时间,所以谢谢。我只是想在这个答案中添加 glEnable(GL_VERTEX_PROGRAM_POINT_SIZE) 需要在绘图调用之前调用,并在绘图调用之后调用相应的 glDisable() @quantumshiv 很高兴你发现它很有用。谢谢你的好话。

以上是关于在 Vbo 中显示具有不同点大小的网格?的主要内容,如果未能解决你的问题,请参考以下文章

将两个不同的网格放在同一个顶点 VBO 中的 OpenGL 最佳实践

配置 VAO 以处理具有多个网格的 VBO

OpenGL ES:一个 VBO 中的多个网格

为啥绘制我的 OpenGL-ES VBO 网格会阻止其他三角形显示?

多个网格、多个 VBO、多个 VAO、OpenGL 4.1

两个不同的对象 OpenGL。 VAO VBO IBO 网格变形问题