2013-05-28 2 views
1

После того, как вы столкнулись с рядом проблем с рендерингом текста в PyGame, я задаюсь вопросом, есть ли какие-либо эффективные способы борьбы с ним.Эффективно обрабатывать текст в PyGame

Первый подход:

магазин тексты уже визуализируют в классах self.variables:

class SomeClass(): 
    def __init__(self): 
     self.text1 = myfont.render("Text 1",0,self.colour) 
     self.text2 = myfont.render("Text 2",0,self.colour) 
     #etc. 

затем в обработке события, я просто блитирования переменную:

while running: 
screen.blit(SomeClass().text1,(x, y)) 

Примечание: myfont - это pygame.font.SysFont (...)

Результат: Framerate упал с> 29 (предел 30) до примерно 20 до 22.

Второй подход:

магазин только текстовые строки в классах переменных и визуализации перед выводом.

class SomeClass(): 
    def __init__(self): 
     self.text1 = "Text 1 string" 
     self.text2 = "Text 2 string" 

и затем сделать непосредственно перед блиттинг:

while running: 
    #more code 
    screen.blit(SomeClass().myfont.render(SomeClass().text1,0,SomeClass().colour) 

Результат: Сопоставимые падение FrameRate

Третий подход:

с помощью GIMP, писать текст, а затем храните его в PNG. Результат: Нет заметных изменений в FPS

Итак, остается вопрос: есть ли способ эффективно обрабатывать текст в PyGame или это всегда лучшее решение для его создания? Я просто не понял базовое правило обработки текста в PyGame? Я что-то пропустил?

Как вы обрабатываете тексты в своих Py-Games?

Спасибо заранее для всех мнений и предложений;)

Patric

ответ

0

можно кэшировать текст визуализации. Попробуйте эту демонстрацию: Render anti-aliased text on transparent surface in pygame

Он будет только перерисовывать, если грязный. (изменение .text или .aa) с использованием свойств.

Редактировать: Возможно, вас заинтересует новый модуль GUI http://program.sambull.org/sgc/.

+0

Спасибо! Это очень интересный подход. Я сделаю это. –

+0

Теперь интересно что-то еще ... Разве команда «print» не потребляет много процессора ...? После того, как я удалил команду для печати FPS, игра внезапно работала заметно быстрее. –

 Смежные вопросы

  • Нет связанных вопросов^_^