从GL_POINT到相机的距离确定gl_PointSize

时间:2016-06-10 17:21:46

标签: opengl camera vertex glpointsize

我正在使用GL_POINTS glDrawArrays(GL_POINTS, 0, numberOfPoints) 使用gl_PointSize在我的顶点着色器中设置每个点的大小。我从glm::lookAt(origin, eye, up)获取视图矩阵。在顶点着色器中使用gl_Position = view * proj * vec4(position, 1.0)设置点的xyz位置。我想要一个点大小随着它到相机原点的距离减小而增加,并且随着距相机原点的距离增加而减小尺寸。就像普通的观点一样。如何确定从距离到相机的距离有多大?

2 个答案:

答案 0 :(得分:0)

这里有一个我最近创建的顶点着色器。

precision mediump float;
attribute vec3 position;

uniform mat4 model, view, projection;
uniform float pointsize;
uniform vec3 cameraeye;

void main(void) {
    gl_Position = projection * view * model * vec4(position.xyz, 1.0);
    gl_PointSize = pointsize - (distance(cameraeye, position.xyz) / pointsize);
}
  • pointsize是该点的初始大小和最大大小
  • cameraeye是摄像机的vec3的世界位置
  • 可能可以删除model矩阵。我在实现中使用的是恒等值的身份矩阵。

答案 1 :(得分:-1)

只需将磅值设置为ref / ptCoord.zref就是1.0距离所需点的大小。