根据 GL_POINT 到相机的距离确定 gl_PointSize
Determine gl_PointSize from distance of a GL_POINT to the camera
我正在绘制 GL_POINTS 使用
glDrawArrays(GL_POINTS, 0, numberOfPoints)
每个点的大小使用 gl_PointSize
在我的顶点着色器中设置。我从 glm::lookAt(origin, eye, up)
获取视图矩阵。在顶点着色器中使用 gl_Position = view * proj * vec4(position, 1.0)
设置点的 xyz 位置。我希望点的大小随着它到相机原点的距离的减小而增加,并且大小随着与相机原点的距离的增加而减小。就像正常的视角一样。如何根据点到相机的距离确定点的大小?
只需将点大小设置为 ref / ptCoord.z
,其中 ref
是距离 1.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
矩阵可能没问题。我在我的实现中使用恒等值的单位矩阵。
我正在绘制 GL_POINTS 使用
glDrawArrays(GL_POINTS, 0, numberOfPoints)
每个点的大小使用 gl_PointSize
在我的顶点着色器中设置。我从 glm::lookAt(origin, eye, up)
获取视图矩阵。在顶点着色器中使用 gl_Position = view * proj * vec4(position, 1.0)
设置点的 xyz 位置。我希望点的大小随着它到相机原点的距离的减小而增加,并且大小随着与相机原点的距离的增加而减小。就像正常的视角一样。如何根据点到相机的距离确定点的大小?
只需将点大小设置为 ref / ptCoord.z
,其中 ref
是距离 1.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
矩阵可能没问题。我在我的实现中使用恒等值的单位矩阵。