Важная информация

User Tag List

Страница 238 из 267 ПерваяПервая ... 234235236237238239240241242 ... ПоследняяПоследняя
Показано с 2,371 по 2,380 из 2663

Тема: Xpeccy

  1. #2371
    Master Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    590
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    212
    Поблагодарили
    115 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    Кстати GL_QUADS давно как уже depricated, используй такое:
    Код:
    	glBegin(GL_TRIANGLE_STRIP);
    	glTexCoord2f(0.0, 0.0); glVertex2f(0.0, 0.0);
    	glTexCoord2f(1.0, 0.0); glVertex2f(1.0, 0.0);
    	glTexCoord2f(1.0, 1.0); glVertex2f(1.0, 1.0);
    	glTexCoord2f(0.0, 1.0); glVertex2f(0.0, 1.0);
    	glEnd();
    OpenGL immediate mode вообще весь официально устарел ещё 15 лет назад. Через вершинные буфера рисовать полагается.

    Цитата Сообщение от Dexus Посмотреть сообщение
    И glClear() каждый фрейм делать не надо. Его вообще можно не делать если ты не собираешься выводить что-то с черными (или какими-то другими) бордюрами вокруг зоны отрисовки.
    Надо. Очень надо. Иначе у тебя каждый кадр зависит от предыдущего, и это порождает ненужные точки синхронизации. А на некоторых версиях драйверов ещё и глюки. А вот glFinish() надо делать, иначе потеряется синхронизация с кадрами на мониторе. Это нужная точка синхронизации, но она должна быть единственной.

    Ну ладно, в эмуляторе первое не особо критично, но вообще -- зачем учиться делать неправильно?

    PS: glClear() уже давно не стоит почти ничего. Это просто установка атрибута "константный цвет" у тайлов кадрового буфера.

  2. #2371
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2372
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не не не, чисто OpenGL тут вообще не при чём. Если только он - всё нормально. А вот если раскомментировать отрисовку индикаторов и прочего (QPainter после этого всего), начинается срань. Гугл излагает, что QPainter может менять разные параметры OpenGL. Окантовка в QPainter::beginNativePainting/QPainter::endNativePainter тоже не помогает. Вот сижу и думаю - что за срань. Можно, конечно, из иконок делать текстуры и просто лепить их средствами OpenGL, но со странностью разобраться хочется...
    Все любят гипножабу

  4. #2373
    Veteran
    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,007
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    77 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    Через вершинные буфера рисовать полагается.
    glBegin/glEnd нормально работает. И еще ХЗ сколько будет работать. Тут не нужно миллион трианглов, тут всего два, на весь экран. Тут главная нагрузка на GPU будет за счет пиксельных шейдеров, и "вершинные буферы" тут вообще ничем не помогут.

    Цитата Сообщение от Sandro Посмотреть сообщение
    Надо. Очень надо. Иначе у тебя каждый кадр зависит от предыдущего, и это порождает ненужные точки синхронизации.
    Без z-buffer - зачем? Это вывод текстуры, предыдущие значения игнорируются (гигаскрин - через блендинг с предыдущим кадром который в буфере). Полно игор, в которых выход "за карту" провоцирует оставучки, черезкадровые. Они конечно не современные, но тем не менее, "очень надо" - надуманно.
    Цитата Сообщение от Sandro Посмотреть сообщение
    А вот glFinish() надо делать, иначе потеряется синхронизация с кадрами на мониторе. Это нужная точка синхронизации, но она должна быть единственной.
    Это да. Без этого и swap interval хз какой результат будет давать.
    Цитата Сообщение от Sandro Посмотреть сообщение
    PS: glClear() уже давно не стоит почти ничего.
    В целом - да. Можно и оставить, оно повлияет разве что на тысячные доли миллисекунды.

  5. #2374
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    Ты не опечатался, растет FPS? Может ограничение кадров нужно просто впихнуть, включить vsync.
    На самом деле замедляется таймер Qt, по которому отсчитывается средний фпс. CPU не отжирается, музыка не разрывается, даже картинка более-менее плавная, но, например, реакция на кнопки очень сильно замедляется, как и таймер.
    Все любят гипножабу

  6. #2375
    Veteran
    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,007
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    77 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Вот сижу и думаю - что за срань. Можно, конечно, из иконок делать текстуры и просто лепить их средствами OpenGL, но со странностью разобраться хочется...
    А, еще поверху в сурфейс на экране пытаешься рисовать? Там вероятно какой-то invalidate срабатывает, и перерисовка снова вызывается (я хз как Qt работает честно говоря, это просто на вскидку).
    Индикаторы правильно будет рисовать средствами OpenGL. Такие же текстурки биндить, и сверху рисовать. Тексты лучше не побуквенно, а целиком.
    А рисовать в оригинальном разрешении на нативной текстуре - плохая история. Это Unreal'у пусть остается, или zesarux'у.
    Может конечно можно победить Qt, чтобы он инвалидейт не создавал и не пытался перерисовывать повторно....

    - - - Добавлено - - -

    Цитата Сообщение от SAM style Посмотреть сообщение
    но, например, реакция на кнопки очень сильно замедляется, как и таймер.
    Похоже на засирание очереди (и сходится с добавляющимся invalidate после отрисовки индикаторов). Это с учетом того что я даже близко не знаком с Qt, просто засирание очереди и лаги эти и в SDL2 лично у меня встречались (на этапе настройки главного цикла)...

    ЗЫ: Если попробовать ставить заглушку на paintEvent в определенных случаях, чтобы пропускать перерисовку из-за индикаторов?
    Последний раз редактировалось Dexus; 31.01.2021 в 21:02.

  7. #2376
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    Похоже на засирание очереди. Это с учетом того что я даже близко не знаком с Qt, просто засирание очереди и лаги эти и в SQL2 лично у меня встречались (на этапе настройки главного цикла)...
    Мне очень интересно, почему это происходит на определенных железяках/развёртках экрана, а на других - всё норм.
    Все любят гипножабу

  8. #2377
    Veteran
    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,007
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    77 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А нет возможности мониторить длину очереди сообщений?

    Цитата Сообщение от SAM style Посмотреть сообщение
    почему это происходит на определенных железяках/развёртках экрана
    Код инициализации режима и параметров текстуры одинаков для всех вариантов?

  9. #2378
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    Код инициализации режима и параметров текстуры одинаков для всех вариантов?
    Для nes-pal и nes-ntsc практически одинаков. отличается частота cpu и развёртка экрана - https://github.com/samstyle/Xpeccy/b...are/nes.c#L245
    comp->fps нигде вообще не используется. существует для возможного использования где-то ещё.
    На сборке без OpenGL никаких эксцессов нет, NTSC работает стабильно
    Последний раз редактировалось SAM style; 31.01.2021 в 22:24.
    Все любят гипножабу

  10. #2379
    Veteran
    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,007
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    77 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    На сборке без OpenGL никаких эксцессов нет, NTSC работает стабильно
    Там вроде вообще к графике никакой связи нет, это все параметры виртуальныех экранов. А графически они могут различаться разве что разрешением (нативным). Вряд ли в этом дело.

    Предлагаю попробовать GL_BGRA вместо GL_RGB и GL_UNSIGNED_INT_8_8_8_8_REV вместо GL_RGB. То есть 4 байта на пиксель а не 3.
    Также попробовать вообще не выводить никакие индикаторы.

    И все-таки попробовать отдебажить что там в очереди сообщений складыается. Возможно и в NTSC тоже очередь захламляется, но просто более удачно расправляется.

    Наверное все же правильнее чтобы над сурфейсом опенгл ничего сверху больше не рисовалось гуями.
    Последний раз редактировалось Dexus; 01.02.2021 в 10:05.

  11. #2380
    Veteran
    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,007
    Спасибо Благодарностей отдано 
    76
    Спасибо Благодарностей получено 
    114
    Поблагодарили
    77 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    https://doc.qt.io/qt-5/qtquick-scene...l-example.html
    SAM style, в такую штуку не смотрел?
    То есть очевидно что это возможно. Всякие 3D редакторы такое явно делают.
    https://forum.qt.io/topic/53152/solv...opengl-scene/5 тут вроде пример рабочий есть для qt5

    https://stackoverflow.com/questions/...57719#51557719

    https://www.qtcentre.org/threads/275...simple-example а тут сказано что qpainter вообще конвертируется в OpenGL вызовы, да еще фиг знает какие (вероятно не самые быстрые).
    Последний раз редактировалось Dexus; 01.02.2021 в 10:29.

Страница 238 из 267 ПерваяПервая ... 234235236237238239240241242 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •