使用GLUT绘制圆锥体和圆柱体

Drawing a Cone and Cylinder using GLUT

本文关键字:圆柱体 圆锥体 绘制 GLUT 使用      更新时间:2023-10-16

我一直在尝试使用GLUT绘制圆锥体和圆柱体。到目前为止,我编写的代码从用户那里获得了两个点,这表示圆锥体/圆柱体的高度,我想用这两个点绘制一个圆锥体和一个圆柱体。

我在谷歌上查找了glutWireCone()gluCylinder()的标准函数,但我不知道如何使用这些函数以我想要的方式绘制。有人能告诉我如何用这两点画一个圆锥体和一个圆柱体吗?如果你需要一些额外的信息来正确理解我的问题,请告诉我。

以下是我的init()main()函数,供您了解我的程序设置:

void init(void)
{
   glClearColor(0.0, 0.0, 0.0, 0.0);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(0.0, WINDOW_WIDTH-1, WINDOW_HEIGHT-1, 0, -1000.0, 1000.0);
   glMatrixMode(GL_MODELVIEW);
   glClear(GL_COLOR_BUFFER_BIT);
}

int main(int argc, char** argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
  glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
  glutInitWindowPosition(220, 80);
  glutCreateWindow("Mini Paint - 3D");
  init();
  glutDisplayFunc(display);
  glutMouseFunc(mouseClick);
  glutMotionFunc(mouseMove);
  glutKeyboardFunc(keyboard);
  glutMainLoop();
  return 0;
}

好吧,让我们使用gluCylinder函数并将其应用于显示函数。看看它的参数:

void gluCylinder(GLU quadric* quad,
                 GLdouble base,
                 GLdouble top,
                 GLdouble height,
                 GLint    slices,
                 GLint    stacks);

所以你想画一个圆柱体,给定高度参数作为输入。我猜其他一切都会保持不变。每次渲染时,您都希望使用glPushMatrix,也可能使用glRotatef,这取决于您希望它的方向,以glPopMatrix 结束此调用

例如:OnRender(float pHeight)

void OnRender(float pHeight) {
    glClearColor(1.0f, 0.0f, 0.0f, 1.0f); //clear
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    glLoadIdentity();
    gluCylinder(quadratic, 0.1f, 0.1f, pHeight, 32, 32);
    glFlush();
}

声明二次对象:

GLUquadricObj *quadratic;
quadratic = gluNewQuadric();

gluCylinder文档:https://www.opengl.org/sdk/docs/man2/xhtml/gluCylinder.xml