我想绘制一个点,模拟光源的位置,但我现在面临的问题是它总是相同的大小,无论距离如何:
我将一个顶点直接推送到GPU,我的代码:
point.vs.glsl
#version 440 core
layout(location = 0) in vec4 position;
layout(location = 0) uniform mat4 model_matrix;
layout(location = 1) uniform mat4 view_matrix;
layout(location = 2) uniform mat4 proj_matrix;
void main(void) {
gl_PointSize = 100.0;
gl_Position = proj_matrix * view_matrix * model_matrix * position;
}
point.fs.glsl
#version 440 core
out vec4 color;
void main(void) {
//create round point
vec2 p = gl_PointCoord * 2.0 - vec2(1.0);
if (dot(p, p) > 1.0) {
discard;
}
color = vec4(0.5, 0.0, 0.0, 1.0);
}
创建圆点的代码实际上也可以在3D中运行吗?如果我没弄错的话,我相信它来自2D教程。
关于点大小,我知道我做错了什么,但我怎么能正确计算尺寸?我认为我有可用的信息,view_matrix
并且我需要以某种方式获得与该点的距离,并根据该比例进行缩放。