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

Opengl 在Vbo中显示具有不同点大小的网格?,opengl,mesh,vbo,openframeworks,glpointsize,Opengl,Mesh,Vbo,Openframeworks,Glpointsize,我试图在openFrameworks中使用Vbo将网格显示为点 我希望所有的点都有不同的大小,有没有办法做到这一点?如果使用顶点着色器,您可以很容易地做到这一点。具体而言,可以在顶点着色器中将gl_PointSize设置为每个顶点的唯一值 void main() { gl_PointSize = <value>; // ... } void main() { gl_PointSize=; // ... } 如果知道每个顶点需要什么值,可以将其作为附加顶点属性传入,

我试图在openFrameworks中使用Vbo将网格显示为点


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

如果使用顶点着色器,您可以很容易地做到这一点。具体而言,可以在顶点着色器中将
gl_PointSize
设置为每个顶点的唯一值

void main()
{
    gl_PointSize = <value>;
    // ...
}
void main()
{
gl_PointSize=;
// ...
}

如果知道每个顶点需要什么值,可以将其作为附加顶点属性传入,也可以从函数生成。如果您想随机设置点大小,这可能有用,也可能会分散注意力,具体取决于您正在执行的操作,您可以尝试使用
noise
GLSL函数,或者检查您正在使用的GLSL中是否不支持
noise
(例如,如果您正在使用WebGL)。

如果您正在使用顶点着色器,则可以轻松地进行设置。具体而言,可以在顶点着色器中将
gl_PointSize
设置为每个顶点的唯一值

void main()
{
    gl_PointSize = <value>;
    // ...
}
void main()
{
gl_PointSize=;
// ...
}

如果知道每个顶点需要什么值,可以将其作为附加顶点属性传入,也可以从函数生成。如果您想随机设置点大小,根据您所做的操作可能有用或分散注意力,您可以尝试使用
noise
GLSL函数,或者检查您所使用的GLSL中是否不支持
noise
(例如,如果您使用的是WebGL)。

这是一个很好的答案,这节省了很多时间,否则我会花在探索上,所以谢谢你。我只是想补充一下,在绘制调用之前需要调用
glEnable(GL\u VERTEX\u PROGRAM\u POINT\u SIZE)
,绘制之后需要调用相应的
glDisable()
call@quantumshiv我很高兴你觉得它有用。谢谢你的好话。这是一个很好的答案,它节省了很多时间,否则我会花在探索上,所以谢谢你。我只是想补充一下,在绘制调用之前需要调用
glEnable(GL\u VERTEX\u PROGRAM\u POINT\u SIZE)
,绘制之后需要调用相应的
glDisable()
call@quantumshiv我很高兴你觉得它有用。谢谢你的客气话。