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

User Tag List

Страница 237 из 278 ПерваяПервая ... 233234235236237238239240241 ... ПоследняяПоследняя
Показано с 2,361 по 2,370 из 2779

Тема: Xpeccy

  1. #2361

    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,091
    Спасибо Благодарностей отдано 
    102
    Спасибо Благодарностей получено 
    152
    Поблагодарили
    100 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SAM style, эти цифры не зависят от режима - маленькое окно или фуллскрин?

  2. #2362

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    SAM style, эти цифры не зависят от режима - маленькое окно или фуллскрин?
    Это x2, поэтому вызовов vid_dot в 2 раза больше, чем vid_dot_full. Чем шире результирующая картинка, тем больше будет vid_dot-ов в vid_dot_full-ах. Строки при увеличении больше x1 просто копируются нужное кол-во раз в конце каждой.

    - - - Добавлено - - -
    @Dexus вот, к примеру, выхлоп callgrind-а на фуллскрине (у меня небольшой монитор, 1440x900). Еле остановил его. 1968 кадров, 12 мульёнов опкодов...
    Все любят гипножабу

  3. #2363

    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,091
    Спасибо Благодарностей отдано 
    102
    Спасибо Благодарностей получено 
    152
    Поблагодарили
    100 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SAM style, понял. Ну вот как раз чтобы не было этого vid_dot на каждый пиксель экрана, и тормоза в фуллскрине не увеличивались — и нужно GPU юзать. Это на самом деле не так сложно. Можешь посмотреть в исходниках openxcom, там sdl+opengl+shaders (шейдеров много всяких, и между прочим ни один эмулятор спека пока не имеет такого количества).

  4. #2364

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    Ну вот как раз чтобы не было этого vid_dot на каждый пиксель экрана, и тормоза в фуллскрине не увеличивались — и нужно GPU юзать. Это на самом деле не так сложно
    Фух, в тестовом проекте получилось делать текстуру из массива пикселей и натягивать её на окно, даже часть текстуры на часть окна. Без установки режима фильтрации ни в какую не хотела показываться.

    Но буфер всё равно надо заполнять не 1:1, а с растяжением в 2 раза по горизонтали для режимов с половинчатыми пикселями
    Все любят гипножабу

  5. #2365

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Фух, в тестовом проекте получилось делать текстуру из массива пикселей
    а можно для немощных такой текстовый проект?

    желательно с перечислением зависимостей
    чтоб не телепатировать их по бесконечному списку ошибок

    Этот пользователь поблагодарил NEO SPECTRUMAN за это полезное сообщение:

    zebest(06.02.2021)

  6. #2366

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а можно для немощных такой текстовый проект?
    Все 20 нужных для этого строчек гуглятся и собираются вместе за пару часов.
    Все любят гипножабу

  7. #2367

    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,091
    Спасибо Благодарностей отдано 
    102
    Спасибо Благодарностей получено 
    152
    Поблагодарили
    100 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SAM style, Поздравляю с успехами
    Да, современные версии opengl без фильтров, простейших шейдеров, уже не умеют ничего толком показывать.

    А что за половинчатые пиксели? Это для dot crawling эффектов? Или для видеорежимов типа 512x240 с профи?
    В любом случае, на 4к мониторах с шейдером картинку можно будет выводить такую, что субпиксели от CRT эмулировать, и относительно недорого с точки зрения производительности.
    Можно попробовать заимствовать у retroarch - любители консолей наваяли кучу всяких.
    Но самое ИМХО важное, что может дать opengl - это относительно равномерный вывод кадров (то чего не хватает хрессу).
    Кстати всякие гигаскриновые сглаживания между 2-3 фреймами можно делать не процесся предыдущие пиксели в vid_dot_full. Можно выводить просто следующий кадр в 2-3й буфферизации, а шейдеру для вывода в текстуру скармливать все эти буферы, и шейдер уже будет усреднять, и выводить сглаженно, полусглаженно, через интерлейс (как некоторые LCD выводят) и даже выделяя бегущие строки (чтобы их не сглаживать). (Это возможные перспективы когда/если вывод через opengl+glsl будут частью проекта).
    Надеюсь, эксперименты будут плодотворны и для релиза
    Последний раз редактировалось Dexus; 31.01.2021 в 05:15.

  8. #2368

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Dexus Посмотреть сообщение
    А что за половинчатые пиксели? Это для dot crawling эффектов? Или для видеорежимов типа 512x240 с профи?
    Да, в том числе для текстовых режимов атм/базеконф/тсконф - там резко увеличивается разрешение по горизонтали. Точки ставятся уже через vid_dot_half
    Цитата Сообщение от Dexus Посмотреть сообщение
    Надеюсь, эксперименты будут плодотворны и для релиза
    Я уже впиливаю, попутно выправляя костыли. Оказалось, что размер текстуры должен быть кратен 4 пикселям, иначе перекос. Еле присобачил обратно вывод индикаторов и сообщений поверх картинки. Что я пока не понял - в NES в режиме NTSC вдруг и внезапно начинает расти фпс, из-за этого дико тормозя, в предыдущей версии такого не наблюдалось. При этом в развёртке PAL/денди всё работает как надо.

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

    Цитата Сообщение от Dexus Посмотреть сообщение
    с шейдером
    Шейдеры пока вообще не трогал. Натягиваю сову на глобус текстуру на окно, и всё.
    Последний раз редактировалось SAM style; 31.01.2021 в 09:17.
    Все любят гипножабу

  9. #2369

    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,087
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    230
    Поблагодарили
    98 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну фиг его знает... Существование QPainter-а почему-то вызывает какую-то фигню. Причём у ZX не вызывает, у NES в PAL не вызывает, а у NES в NTSC вызывает. И у специалиста вызывает... По внешним признакам случается какая-то рекурсия, которая замедляет обработку событий в Qt, и чем дальше - тем больше замедляет.
    Код:
    void MainWin::paintEvent(QPaintEvent*) {
    	// printf("paint event\n");
    #ifdef USEOPENGL
    	makeCurrent();
    
    	glMatrixMode(GL_MODELVIEW);
    	glPushMatrix();
    	glEnable(GL_TEXTURE_2D);
    	//glEnable(GL_MULTISAMPLE);
    	glViewport(0, 0, width(), height());
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	glLoadIdentity();
    	// generate texture image
    	glBindTexture(GL_TEXTURE_2D, texid);
    	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bytesPerLine / 3, comp->vid->vsze.y, 0, GL_RGB, GL_UNSIGNED_BYTE, comp->debug ? scrimg : bufimg);
    	// draw texture
    	glBegin(GL_QUADS);
    	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();
    	glDisable(GL_TEXTURE_2D);
    	//glDisable(GL_MULTISAMPLE);
    	glMatrixMode(GL_MODELVIEW);
    	glPopMatrix();
    
    	// existing of active QPainter is starting a strange things
    	//QPainter pnt(this);
    	//drawIcons(pnt);
    	//pnt.end();
    #else
    	QPainter pnt(this);
    	pnt.drawImage(0,0, QImage(comp->debug ? scrimg : bufimg, width(), height(), QImage::Format_RGB888));
    	drawIcons(pnt);
    	pnt.end();
    #endif
    }
    Все любят гипножабу

  10. #2370

    Регистрация
    04.08.2005
    Адрес
    Nizhnevartovsk
    Сообщений
    1,091
    Спасибо Благодарностей отдано 
    102
    Спасибо Благодарностей получено 
    152
    Поблагодарили
    100 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SAM style Посмотреть сообщение
    Да, в том числе для текстовых режимов атм/базеконф/тсконф - там резко увеличивается разрешение по горизонтали. Точки ставятся уже через vid_dot_half
    Хмм.. А не легче ли просто разрешение по-горизонтали удвоить, указав пропорцию 1:2, вместо того чтобы придумывать "полупиксели"?..

    Цитата Сообщение от SAM style Посмотреть сообщение
    Оказалось, что размер текстуры должен быть кратен 4 пикселям, иначе перекос.
    Ты вероятно используешь компрессированную текстуру? Это там вроде, несмотря на NPOT (non power of two) имеется требование в кратности 4м (ибо все идет блоками 4х4).

    Цитата Сообщение от SAM style Посмотреть сообщение
    Что я пока не понял - в NES в режиме NTSC вдруг и внезапно начинает расти фпс, из-за этого дико тормозя, в предыдущей версии такого не наблюдалось. При этом в развёртке PAL/денди всё работает как надо.
    Ты не опечатался, растет FPS? Может ограничение кадров нужно просто впихнуть, включить vsync.

    Цитата Сообщение от SAM style Посмотреть сообщение
    Шейдеры пока вообще не трогал. Натягиваю текстуру на окно, и всё.
    А фильтрацию какую используешь? GL_NEAREST или GL_LINEAR? Надеюсь не вторую

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

    Цитата Сообщение от SAM style Посмотреть сообщение
    По внешним признакам случается какая-то рекурсия, которая замедляет обработку событий в Qt, и чем дальше - тем больше замедляет.
    А текстуру освобождаешь?
    Хотя там в любом случае один и тот же texid используется, главное чтобы этот айдишник оставался одним и тем же (ну или пара, чтобы выводить со сглаживания между кадрами).

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

    Кстати 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();
    И glClear() каждый фрейм делать не надо. Его вообще можно не делать если ты не собираешься выводить что-то с черными (или какими-то другими) бордюрами вокруг зоны отрисовки.

    Вообще рекомендую глянуть вот сюда: https://github.com/OpenXcom/OpenXcom...penGL.cpp#L151
    Последний раз редактировалось Dexus; 31.01.2021 в 19:28.

Страница 237 из 278 ПерваяПервая ... 233234235236237238239240241 ... ПоследняяПоследняя

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

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

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

Ваши права

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