用OpenGL渲染.obj文件的顶点数据

a14dhokn  于 2022-09-26  发布在  其他
关注(0)|答案(1)|浏览(182)

所以我想渲染一条2D曲线。这方面的数据通过Blender以.obj文件的形式提供。我还有一个对象加载器,它可以成功地检索文件的顶点。

以下是我的窗口/显示限制:

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(0,0);
glutCreateWindow("examplke");
gluOrtho2D(0.0, 600.0, 0.0, 600.0) // Params: Left, right, bottom, top
glutDisplayFunc(renderDisplay);

和我的显示功能:

void renderDisplay() {
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 0.0, 1.0);
glBegin(GL_LINE_STRIP);
for (int i = 0; i < vertices.size(); i += 3) {
    glVertex2f(vertices[i], vertices[i+2]);
}
glEnd();
glFlush();

和我的.obj文件数据:

v -6.010289 0.000000 0.980260
v -5.443917 0.000000 0.413888
v -4.899328 0.000000 0.000000
v 4.899328 0.000000 0.000000
v 5.487484 0.000000 0.326753
v 5.814237 0.000000 0.740641
l 1 2
l 2 3
l 3 4
l 4 5
l 5 6

所以这里的问题是,我必须如何准确地转换顶点数据,以相对于我的显示限制(例如:600 x 600像素)正确地呈现我的对象。我知道我必须进行一些GL_PROJUCTION和GL_MODELVIEW转换。但即使在研究之后,我也不太明白如何才能做到这一点。或者,有没有办法通过搅拌机软件做到这一点?

pengsaosao

pengsaosao1#

您需要根据几何体设置投影。gluOrtho2D定义投影到视口中的二维区域。不同范围内的坐标需要不同的投影。投影区域应包含顶点坐标的最小和最大值。
您的坐标在-6到6的范围内。因此更改投影,例如:

gluOrtho2D(0.0, 600.0, 0.0, 600.0);

gluOrtho2D(-10.0, 10.0, -10.0, 10.0);

或者,您可以缩放和平移坐标。

相关问题