Как правильно рисовать метки в OpenGL Viewport? - PullRequest
2 голосов
/ 23 июня 2011

У меня есть приложение-разработчик OpenGL для нескольких портов.Он имеет три разных видовых экрана: перспектива, фронт и верх.Теперь я хочу нарисовать ярлык для каждого видового экрана, но мне это не удается.

Каков наилучший способ печати ярлыка для каждой отдельной перспективы?РЕДАКТИРОВАНИЕ: Результат Вот результат моей попытки: Label of perspective viewport is weird

Я не понимаю, почему метка окна вида в перспективе так закодирована.И, на самом деле, я хочу нарисовать его в левом верхнем углу.Как мне это сделать, потому что я думаю, что нужно 3D-координаты ... это правильно?Вот мой код нанесения этикетки

glColor3f(1,0,0);

        glDisable(GL_DEPTH_TEST);
        glDepthMask(GL_FALSE);

        glRasterPos2f(0,0);
        glPushAttrib(GL_LIST_BIT);                          // Pushes The Display List Bits
glListBase(base - 32);                              // Sets The Base Character to 32    
    glCallLists(strlen("Perspective"), GL_UNSIGNED_BYTE, "Perspective");    // Draws The Display List Textstrlen(label)
glPopAttrib();

Я использую код отсюда http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=13

спасибо

Ответы [ 2 ]

4 голосов
/ 23 июня 2011

Для каждого видового экрана переключитесь в проекцию, которая позволяет указывать координаты «пространства видового экрана», отключать проверку глубины (glDisable(GL_DEPTH_TEST)) и записи глубины (glDepthMask(GL_FALSE)) и рисовать текст, используя один из методов, используемых для рисования текста.в OpenGL (шрифты с текстурным отображением, рендеринг полного текста в текстурный чертеж, рисующий глифы как фактическую геометрию).

1 голос
/ 23 июня 2011

Наряду с отличным ответом @ datenwolf, я бы добавил всего один совет: вместо того, чтобы рисовать метку в области просмотра, обычно проще (и часто выглядит лучше) нарисовать метку только снаружиокно просмотра.Это позволяет избежать метки, закрывающей что-либо в области просмотра, и позволяет легко получить красивый, чистый сглаженный текст (который вы можете обычно также делаете в OpenGL, но это сложнее).

Если вы в любом случае решите, что вам нужно нарисовать текст в окне просмотра, я добавлю лишь одну незначительную деталь к тому, что сказал @datenwolf: поскольку вы обычно хотите, чтобы ваш текст был сглаженным (даже если остальная часть изображения не 't) вы обычно хотите нарисовать метку после всей остальной геометрии самого изображения.Если в противном случае вы не включили сглаживание, вы, как правило, захотите включить его для рисования текста.

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