gpt4 book ai didi

c++ - 使用 GLUT 绘制圆锥体和圆柱体

转载 作者:行者123 更新时间:2023-11-30 04:05:43 25 4
gpt4 key购买 nike

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

我查阅了 Google 并找到了名为 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

关于c++ - 使用 GLUT 绘制圆锥体和圆柱体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com