我正在使用 GL_POINTS 绘制
glDrawArrays(GL_POINTS, 0, numberOfPoints)
每个点的大小在我的顶点着色器中使用gl_PointSize
. 我从顶点着色器glm::lookAt(origin, eye, up)
中设置点的 xyz 位置获取视图矩阵。gl_Position = view * proj * vec4(position, 1.0)
我希望点的大小随着与相机原点的距离的减小而增加,并且随着与相机原点的距离的增加而减小。就像正常的视角一样。从它到相机的距离,我如何确定一个点的大小?
问问题
1332 次
2 回答
1
ref / ptCoord.z
只需将点大小设置ref
为距离为1.0
.
于 2016-06-10T18:06:38.077 回答
1
这是我最近创建的一个顶点着色器来实现这一点。
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
删除矩阵可能很好。我在我的实现中使用了恒等矩阵的值。
于 2019-01-12T21:03:44.597 回答