Я использую GLUT для работы с OpenGL (буду работать с SDL, если бы мог). И мне нужно рисовать сферу. Я использую gluSphere
, но он просто ничего не рисует.C++ + glut + OpenGL + gluSphere ничего не нарисовал
Вот мой инициализации GLUT:
// Initializes display
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(600, 600);
// Window settings
glutCreateWindow("Collision detect");
glClearColor(0.0, 0.0, 0.0, 1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glEnable(GL_TEXTURE_2D);
Квадратная инициализация:
quadratic = gluNewQuadric();
if(!quadratic){
throw new PROGRAM_EXCEPTION("Cannot initialize quadartic", NULL);
}
gluQuadricNormals(quadratic, GLU_SMOOTH);
//gluQuadricDrawStyle(quadratic, GLU_FILL);
gluQuadricTexture(quadratic, GL_TRUE); // Tried both GL_TRUE and GL_FALSE
И моя ничья функция:
glPushMatrix();
glTranslatef(position.getX(), position.getY(), position.getZ());
// This commented piece of code draws dot where I want it to,
// so coordinates and camera position are just fine
// glBegin(GL_POINTS);
// glVertex3f(0,0,0);
// glEnd();
gluSphere(quadratic, 20.0f, 32, 32); // Tried r = 0.02f, 0.2f, 2.0f, 20.0f, none works
glPopMatrix();
Вопрос: что мне не хватает? Есть ли какой-то трюк в перенасыщении, чтобы позволить квадратике рисовать? Это несовместимо с некоторыми моими настройками?
Я потратил несколько часов, пытаясь разобраться в этом, попробовал разные вещи ... Если вам нужен какой-то другой код, просто скажите, какой ... Я не хочу вставлять здесь 2000 строк. И еще одна вещь, я тройной чек, я не использую его внутри glBegin()
и glEnd()
. У меня несколько треугольников, окружающих пространство, и они рисуют просто отлично.
Вы не должны использовать 'new', бросая исключение; подумайте о том, что произойдет, если «новый» не удался. – datenwolf
@ datenwolf Ха-ха! Благодарю. Я видел бросание исключений с 'new Exception', когда я изучал C++, ну, давным-давно, и хотя это требует синтаксиса с тех пор. – Vyktor