glOrtho не работает? - PullRequest
       4

glOrtho не работает?

1 голос
/ 07 октября 2011
 /* OpenGL animation code goes here */
        glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
        glClear (GL_COLOR_BUFFER_BIT);
        glDisable(GL_DEPTH_TEST);

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0.0f,512.0f,0.0f,512.0f,0.0f,1.0f);

        glMatrixMode(GL_MODELVIEW_MATRIX);
        glPushMatrix ();
        glLoadIdentity();
        glTranslatef(x,y,0.0f);
        //glRotatef (theta, 0.0f, 0.0f, 1.0f);

        glBegin (GL_TRIANGLES);
        glColor3f (1.0f, 0.0f, 0.0f);   glVertex2f (0.0f, 1.0f);
        glColor3f (0.0f, 1.0f, 0.0f);   glVertex2f (0.8f, -0.5f);
        glColor3f (0.0f, 0.0f, 1.0f);   glVertex2f (-0.8f, -0.5f);
        glEnd ();
        glPopMatrix ();

        SwapBuffers (hDC);
        //theta += 0.1f;
        Sleep(1);
        }

Это основной простой цикл opengl.

Недавно я вернулся к изучению Opengl (после того, как оставил его на 2 года).Проблема в том, что я пытался использовать glOrtho для создания 2D-среды, но она не работает.Я имею в виду, что программа, похоже, игнорирует вызов glOrtho (без ошибок, без предупреждений, без проекций, ничего).Это приводит к тому, что вершина (0,1) GL_TRIANGLE попадает в верхнюю часть окон, и все, что больше 1,0f, вылетит из области просмотра (я думаю, это все еще единичная матрица?).Я попытался изменить параметры, но никаких изменений в vieewport не произошло.Я не знаю, пропускаю ли я что-то (возможно, пропускает какой-то шаг инициализации или какой-то устаревший код, о котором я не знаю).

1 Ответ

1 голос
/ 07 октября 2011
glOrtho(0.0f,512.0f,0.0f,512.0f,0.0f,1.0f);

Эта проекция эффективно выбирает прямоугольники шириной 512, высотой 512 и глубиной 1 в качестве видимого пространства мира. Однако все указанные вами вершины будут находиться в очень маленьком подмножестве поля, т. Е. В одной единице.

glBegin (GL_TRIANGLES);
glColor3f (1.0f, 0.0f, 0.0f);   glVertex2f (0.0f, 1.0f);
glColor3f (0.0f, 1.0f, 0.0f);   glVertex2f (0.8f, -0.5f);
glColor3f (0.0f, 0.0f, 1.0f);   glVertex2f (-0.8f, -0.5f);
glEnd();

Я думаю, вы просто перепутали использование glOrtho с glViewport.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...