Когда я запускаю этот код, консоль показывает «неверное значение» как ошибку.Я исследовал в своих книгах, но не нашел, как решить это.Они даже не упоминают, о чем эта ценность.Я предполагаю, что это будет номер адреса, сохраненный в указателе, возвращенном 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();
}