我有一个世界点列表 (XYZ),我想在 openGL window 中显示它们

I have a list of world points(XYZ) and I want to show them in a openGL window

我在 x 中的点在 0.25 和 1.21 之间,我在 y 中的点在 3 和 4 之间,我在 z 中的点在 99 和 101 之间。
这是我的顶点着色器

#version 330 core
// Input vertex data, different for all executions of this shader.
layout(location = 0) in vec3 vertexPosition_modelspace;
layout(location = 1) in vec3 vertexColor;

// Output data ; will be interpolated for each fragment.
out vec3 fragmentColor;
// Values that stay constant for the whole mesh.
uniform mat4 MVP;

void main(){    

    // Output position of the vertex, in clip space : MVP * position
    gl_Position =  MVP * vec4(vertexPosition_modelspace,1);

    // The color of each vertex will be interpolated
    // to produce the color of each fragment
    fragmentColor = vertexColor;
}

这里是 c++ 中的代码

glm::mat4 Projection = glm::ortho(0.0f, 2.0f, 2.0f, 5.0f, 0.0f, 200.0f);
// Camera matrix
glm::mat4 View = glm::lookAt(
    glm::vec3(4, 3, -3), // Camera is at (4,3,-3), in World Space
    glm::vec3(0, 0, 0), // and looks at the origin
    glm::vec3(0, 1, 0)  // Head is up (set to 0,-1,0 to look upside-down)
);
// Model matrix : an identity matrix (model will be at the origin)
glm::mat4 Model = glm::mat4(1.0f);
// Our ModelViewProjection : multiplication of our 3 matrices
glm::mat4 MVP = Projection * View * Model; // Remember, matrix multiplication is the other way around
glm::mat4 modelview = MVP;

我还可以补充一点,我能够打印一个矩形,我使用该投影将顶点硬编码为 -1 和 1(注意这里是透视而不是正交)

glm::mat4 Projection = glm::perspective(45.0f, 4.0f / 3.0f, 0.1f, 100.0f);

你没有看向你的点云。 glm::lookAt的第一个参数是相机的位置,第二个参数是你正在看的点。
因此视图的方向是 (0, 0, 0) - (4, 3, 3) = (-4, -3, 3).
如果点在 x: [0.25, 1.21], y: [3, 4], z: [99, 101] 范围内。视线不与该体积相交。 更改视图的目标 (center):

glm::mat4 View = glm::lookAt(
    glm::vec3(4, 3, -3), 
    glm::vec3(0.73f, 3.5f, 100.0f), 
    glm::vec3(0, 1, 0));

glm::vec3(0.73f, 3.5f, 100.0f) 是点云的中心。

并且您需要确保投影的中心在视线上:

glm::ortho(-2.0f, 2.0f, 2.0f, -2.0f, 0.0f, 200.0f);