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