在 OpenGL 中使用 glm::ortho 投影
using glm::ortho projection in OpenGL
我正在尝试模拟从 200 米高处抛球。我知道我必须将坐标从 -1.0、1.0 转换为 0、200。
我画球的顶点是这样的:
for(int i=0; i < NUM_VERTICES; i++)
{
GLfloat angle = 2*M_PI/NUM_VERTICES * i;
GLfloat x = 10 * cos(angle);
GLfloat y = 10 * sin(angle);
vertices.push_back(x);
vertices.push_back(y);
}
然后我有一个像这样的正交投影:
glm:mat4 projection;
projection = glm::ortho(0.0f, 200.0f, 0.0f, 200.0f, 0.1f, 100.0f);
和翻译
glm::mat4 view;
view = glm::translate(view, glm::vec3(100.0f, 200.0f, 0.0f));
但我的视口中没有显示任何内容。
您似乎在 z=0 处绘制,而您的 z 范围是 [-0.1, -100],因此几何图形被裁剪了,因为它位于近平面的前面。
我正在尝试模拟从 200 米高处抛球。我知道我必须将坐标从 -1.0、1.0 转换为 0、200。
我画球的顶点是这样的:
for(int i=0; i < NUM_VERTICES; i++)
{
GLfloat angle = 2*M_PI/NUM_VERTICES * i;
GLfloat x = 10 * cos(angle);
GLfloat y = 10 * sin(angle);
vertices.push_back(x);
vertices.push_back(y);
}
然后我有一个像这样的正交投影:
glm:mat4 projection;
projection = glm::ortho(0.0f, 200.0f, 0.0f, 200.0f, 0.1f, 100.0f);
和翻译
glm::mat4 view;
view = glm::translate(view, glm::vec3(100.0f, 200.0f, 0.0f));
但我的视口中没有显示任何内容。
您似乎在 z=0 处绘制,而您的 z 范围是 [-0.1, -100],因此几何图形被裁剪了,因为它位于近平面的前面。