РЕШЕНО: Проблема заключалась в том, что на самом деле проблема заключалась в использовании time.time() в каждом цикле ЦП, чтобы определить, следует ли отрисовывать следующий кадр или нет. Время, необходимое для выполнения time.time(), влияло на FPS.
Я создал эту функцию для рисования 2D-текстур в виде изображений в 2D-представлении в своем приложении OpenGL. Проведя некоторое тестирование, я обнаружил, что на текстуру уходит 1-2 кадра в секунду. Я знаю, что, вероятно, делаю что-то не так в этом коде. Есть идеи? Я ограничиваю FPS до 60.
Изменить: Когда я отключаю рендеринг текстур, он возвращает около 15% FPS. Когда я отключил рендеринг текста, это прибавило около 15% fps. Когда я отключаю оба, почти не потребляется fps. IE: 20 из 60 кадров в секунду при обоих включенных. 30 из 60, когда один отключен. 58 из 60, когда оба отключены.
При рендеринге текста на кнопке (элемент управления, который я использую для тестирования) он «подготавливает» текст только тогда, когда установлена метка кнопки.
Обновленный код, все еще работает с той же скоростью, но работает так же:
def render2DTexture( self, texture, rect, texrect ):
glEnable( GL_TEXTURE_2D )
glBindTexture( GL_TEXTURE_2D, texture )
glBegin( GL_QUADS )
glTexCoord2f( texrect.left, texrect.bottom )
glVertex2i( rect.left, self.windowSize[1] - rect.top )
glTexCoord2f( texrect.right, texrect.bottom )
glVertex2i( rect.left + rect.right, self.windowSize[1] - rect.top )
glTexCoord2f( texrect.right, texrect.top )
glVertex2i( rect.left + rect.right, self.windowSize[1] - ( rect.top + rect.bottom ) )
glTexCoord2f( texrect.left, texrect.top )
glVertex2i( rect.left, self.windowSize[1] - ( rect.top + rect.bottom ) )
glEnd()
glDisable( GL_TEXTURE_2D )
def prepareText( self, text, fontFace, color ):
self.loadFont( fontFace )
bmp = self.fonts[ fontFace ].render( text, 1, color )
return ( pygame.image.tostring( bmp, 'RGBA', 1 ), bmp.get_width(), bmp.get_height() )
def renderText( self, pText, position ):
glRasterPos2i( position[0], self.windowSize[1] - ( position[1] + pText[2] ) )
glDrawPixels( pText[1], pText[2], GL_RGBA, GL_UNSIGNED_BYTE, pText[0] )
Подробнее здесь: https://stackoverflow.com/questions/239 ... on-so-slow
Почему моя функция Python OpenGL render2DTexture работает так медленно? ⇐ Python
Программы на Python
1768615550
Anonymous
[b]РЕШЕНО:[/b] Проблема заключалась в том, что на самом деле проблема заключалась в использовании time.time() в каждом цикле ЦП, чтобы определить, следует ли отрисовывать следующий кадр или нет. Время, необходимое для выполнения time.time(), влияло на FPS.
Я создал эту функцию для рисования 2D-текстур в виде изображений в 2D-представлении в своем приложении OpenGL. Проведя некоторое тестирование, я обнаружил, что на текстуру уходит 1-2 кадра в секунду. Я знаю, что, вероятно, делаю что-то не так в этом коде. Есть идеи? Я ограничиваю FPS до 60.
[b]Изменить:[/b] Когда я отключаю рендеринг текстур, он возвращает около 15% FPS. Когда я отключил рендеринг текста, это прибавило около 15% fps. Когда я отключаю оба, почти не потребляется fps. IE: 20 из 60 кадров в секунду при обоих включенных. 30 из 60, когда один отключен. 58 из 60, когда оба отключены.
При рендеринге текста на кнопке (элемент управления, который я использую для тестирования) он «подготавливает» текст только тогда, когда установлена метка кнопки.
Обновленный код, все еще работает с той же скоростью, но работает так же:
def render2DTexture( self, texture, rect, texrect ):
glEnable( GL_TEXTURE_2D )
glBindTexture( GL_TEXTURE_2D, texture )
glBegin( GL_QUADS )
glTexCoord2f( texrect.left, texrect.bottom )
glVertex2i( rect.left, self.windowSize[1] - rect.top )
glTexCoord2f( texrect.right, texrect.bottom )
glVertex2i( rect.left + rect.right, self.windowSize[1] - rect.top )
glTexCoord2f( texrect.right, texrect.top )
glVertex2i( rect.left + rect.right, self.windowSize[1] - ( rect.top + rect.bottom ) )
glTexCoord2f( texrect.left, texrect.top )
glVertex2i( rect.left, self.windowSize[1] - ( rect.top + rect.bottom ) )
glEnd()
glDisable( GL_TEXTURE_2D )
def prepareText( self, text, fontFace, color ):
self.loadFont( fontFace )
bmp = self.fonts[ fontFace ].render( text, 1, color )
return ( pygame.image.tostring( bmp, 'RGBA', 1 ), bmp.get_width(), bmp.get_height() )
def renderText( self, pText, position ):
glRasterPos2i( position[0], self.windowSize[1] - ( position[1] + pText[2] ) )
glDrawPixels( pText[1], pText[2], GL_RGBA, GL_UNSIGNED_BYTE, pText[0] )
Подробнее здесь: [url]https://stackoverflow.com/questions/2398004/why-is-my-python-opengl-render2dtexture-function-so-slow[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия