Почему мое соотношение сторон меняется без каких-либо изменений в коде?C++

Программы на C++. Форум разработчиков
Anonymous
Почему мое соотношение сторон меняется без каких-либо изменений в коде?

Сообщение Anonymous »

Я пытаюсь восстановить основы программирования OpenGL, которые я потерял некоторое время назад. Итак, я пытаюсь получить стандартное четверное вращение. Он появляется, но каждый раз, когда я его запускаю, соотношение сторон СИЛЬНО меняется: от сжатия или растягивания до крошечного или огромного четырехугольника. Я ничего не делаю, кроме как запускаю его, выключаю, запускаю снова, снова и снова, каждый раз с совершенно разными результатами.
Это код, с которым я балуюсь для усеченного конуса. Я знаю, что усеченная пирамида совершенно не работает, но мне интересно, почему она так сильно меняется, а я ничего не меняю?
RECT rect;
GetWindowRect(hWnd, &rect);

........

double width = rect->right - rect->left;
double height = rect->bottom - rect->top;
double aspect = width/height;

glViewport(0, 0, width, height); // Reset The Current Viewport
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity(); // Reset The Projection Matrix

GLdouble fW, fH;

double t = 0.1 * tan(aspect*45/2);
double b = -t;
double r = aspect*t;
double l = -r;
glFrustum( l, r, b, t,0.1,100.0);

Это раздел рисования. По сути, это просто копирование:
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glClear (GL_COLOR_BUFFER_BIT);

glPushMatrix ();
glRotatef (theta, 0.0f, 0.0f, 1.0f);
glBegin (GL_QUADS);
glColor3f (1.0f, 0.0f, 0.0f); glVertex3f (-1.0f, -1.0f, -5.15f);
glColor3f (1.0f, 1.0f, 0.0f); glVertex3f (1.0f, -1.0f, -5.15f);
glColor3f (1.0f, 0.0f, 1.0f); glVertex3f (1.0f, 1.0f, -5.15f);
glColor3f (0.0f, 1.0f, 0.0f); glVertex3f (-1.0f, 1.0f, -5.15f);
glEnd ();
glPopMatrix ();

SwapBuffers (hDC);

theta += 1.0f;
Sleep (1);


Подробнее здесь: https://stackoverflow.com/questions/786 ... o-the-code

Вернуться в «C++»