【发布时间】:2019-01-19 17:01:04
【问题描述】:
当我运行此代码时,控制台将“无效值”显示为错误。我在书中进行了研究,但没有找到解决方法。他们甚至没有提到这个值是关于什么的。我想这将是存储在gluNewQuadric 返回的指针中的地址号,可能超出 GLUquadric 类型的范围,但无法确定或修复它
#include <stdio.h>
#include <stdlib.h>
#include <GL/glut.h>
#ifndef CALLBACK
#define CALLBACK
#endif
void CALLBACK erro(GLenum coderro)
{
const GLubyte *estring;
estring=gluErrorString(coderro);
fprintf(stderr, "Erro de quadrica: %s\n", estring);
exit(0);
}
void tela ()
{
GLUquadric *quadrica;
glClearColor(1.0, 1.0, 1.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-30.0, 30.0, -30.0, 30.0, 1, 100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslated(0.0, 0.0, -20.0);
glColor3f(1.0, 0.0, 0.0);
quadrica=gluNewQuadric();
gluQuadricCallback(quadrica, GLU_ERROR, erro);
gluQuadricDrawStyle(quadrica, GLU_FILL);
gluDisk(quadrica, 0.0, 5.0, 1, 1);
glFlush();
}
int main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize(500, 500);
glutCreateWindow("Tesselacao");
glutDisplayFunc(tela);
glutMainLoop();
}
【问题讨论】: