0

我正在用 C++ 和 openGl 制作公寓。我只通过在绘图函数中声明点来制作基本的墙壁、屋顶和地板,当然一切正常,但是代码很乱,以这种方式添加家具当然会非常痛苦。所以我问我应该如何组织我的对象和格式绘图功能?

这是当前代码:

// Floor and roof of room 1
glBegin(GL_QUADS);
    glNormal3f(0.0, 1.0, 0.0);
    glColor3f(0.0, 1.0, 1.0);
    glVertex3f(0.0, 0.0, 0.0);
    glVertex3f(1.0, 0.0, 0.0);
    glVertex3f(1.0, 0.0, 1.0);
    glVertex3f(0.0, 0.0, 1.0);

    glNormal3f(0.0, -1.0, 0.0);
    glColor3f(0.0, 1.0, 0.0);
    glVertex3f(0.0, 1.0, 0.0);
    glVertex3f(1.0, 1.0, 0.0);
    glVertex3f(1.0, 1.0, 1.0);
    glVertex3f(0.0, 1.0, 1.0);
glEnd();

// Walls
glBegin(GL_QUAD_STRIP);
    glNormal3f(1.0, 0.0, 0.0);
    glColor3f(1.0, 1.0, 1.0);

    glVertex3f(0.0, 0.0, 0.0);
    glVertex3f(0.0, 1.0, 0.0);

    glColor3f(1.0, 0.0, 0.0);

    glVertex3f(0.0,0.0,1.0);
    glVertex3f(0.0,1.0,1.0);

    glNormal3f(0.0, 0.0, -1.0);
    glColor3f(0.0, 0.0, 1.0);

    glVertex3f(1.0, 0.0, 1.0);
    glVertex3f(1.0, 1.0, 1.0);

    glNormal3f(-1.0, 0.0, 0.0);
    glColor3f(0.5, 0.0, 0.5);

    glVertex3f(1.0, 0.0, 0.0);
    glVertex3f(1.0, 1.0, 0.0);
glEnd();

And so on for room 2 and door spots..

有什么地方可以读到这个主题吗?

4

1 回答 1

1

您可以使用 3d 建模软件,例如→Blender来定义您的几何图形等。然后我建议使用→Assimp来加载导出的模型。还建议避免使用旧的固定功能管道 - 编写自己的小型场景图引擎并使用→GLM管理矩阵和 3d 数学

于 2013-05-21T15:14:36.937 回答