Как изменить размер шрифта растровых символов в PyOpenGL? - PullRequest
1 голос
/ 25 июня 2019

Я делаю игру в PyOpenGL и использую некоторые наложения текста. Как изменить размер шрифта шрифтов, включенных в OpenGL.GLUT?

Вот что у меня сейчас:

def blit_text(x,y,font,text,r,g,b):
    blending = False 
    if glIsEnabled(GL_BLEND):
        blending = True
    glColor3f(r,g,b)
    glWindowPos2f(x,y)
    for ch in text:
        glutBitmapCharacter(font,ctypes.c_int(ord(ch)))
    if not blending:
        glDisable(GL_BLEND)

blit_text(displayCenter[0] - 5,displayCenter[1] - 5,GLUT_BITMAP_TIMES_ROMAN_24,"*",0,1,0)

1 Ответ

0 голосов
/ 25 июня 2019

К сожалению, вы не можете.

glutBitmapCharacter использует glBitmap для растрового изображения (и "блика") растрового изображения до кадрового буфера в соотношении пикселей 1: 1. Таким образом, растровое изображение не может быть масштабировано, и позиция устанавливается как glWindowPos соответственно glRasterPos.

Если вы хотите нарисовать текст с другим размером, вам нужно выбрать другой шрифт, например glutBitmapCharacter.

Когда вы используете glutStrokeCharacter, текст рисуется строчными примитивами. Толщина текста может быть установлена ​​glLineWidth. Положение и размер текста могут зависеть от текущей модели представления матрицы и матрицы проекции. Таким образом, положение текста можно установить с помощью glTranslate, а размер можно изменить с помощью glScale. Текст можно даже повернуть на glRotate.

например:.

def blit_text(x,y,font,text,r,g,b):

    glColor3f(r,g,b)
    glLineWidth(5)
    glTranslatef(x, y, 0)
    glScalef(1, 1, 1)
    for ch in text:
        glutStrokeCharacter(font,ctypes.c_int(ord(ch)))

glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(0, windowWidth, 0, windowHeight, -1, 1)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

blit_text(10, 10, GLUT_STROKE_ROMAN, "**", 0, 1, 0)

См. Также freeglut - 14. Функции рендеринга шрифтов для использования glutBitmapString соответственно glutStrokeString.

...