gpt4 book ai didi

c - reshape() 函数在 glut 中有什么用?

转载 作者:行者123 更新时间:2023-12-04 22:21:31 25 4
gpt4 key购买 nike

reshape() 怎么样在此代码中工作的函数以及它如何从 glutReshapeFunc(reshape) 获取其参数glutReshapeFunc(reshape) 的整形中没有任何参数?int x 的值是多少? , int yvoid keyboard (unsigned char key, int x, int y)功能?

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

static int year = 0, day = 0;

void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel (GL_FLAT);
}

void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);

glPushMatrix();
glutWireSphere(1.0, 20, 16); /* draw sun */
glRotatef ((GLfloat) year, 0.0, 1.0, 0.0);
glTranslatef (2.0, 0.0, 0.0);
glRotatef ((GLfloat) day, 0.0, 1.0, 0.0);
glutWireSphere(0.2, 10, 8); /* draw smaller planet */
glPopMatrix();
glutSwapBuffers();
}

void reshape (int w, int h)
{
glViewport (0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void keyboard (unsigned char key, int x, int y)
{
switch (key) {
case `d':
day = (day + 10) % 360;
glutPostRedisplay();
break;
case `D':
day = (day - 10) % 360;
glutPostRedisplay();
break;
case `y':
year = (year + 5) % 360;
glutPostRedisplay();
break;
case `Y':
year = (year - 5) % 360;
glutPostRedisplay();
break;
default:
break;
}
}

int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow (argv[0]);
init ();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}

最佳答案

看来 glutReshapeFunc() function 接受一个指向函数的指针;据推测,事实上,它被声明为有点类似于:

void glutReshapeFunc(void (*function)(int x, int y));

同样, glutDisplayFunc()获取另一个指向函数的指针, glutKeyboardFunc()还需要一个指向函数的指针。当一个函数由名称指定而其后没有函数调用括号时,它会简化为“指向函数的指针”(或者您可以将裸函数名称视为指向函数体的指针,就像裸数组名称是指针一样到数组的开头)。

您必须阅读手册才能了解 x 的用途。和 y keyboard() 的参数功能。显示的代码不使用它们。它们可能是某物的位置,但不阅读手册就不太清楚。

关于c - reshape() 函数在 glut 中有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17539132/

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