Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / OpenGL Вопросы (21 стр)

OpenGL Вопросы (21 стр)

Поделиться

Страницы: 1 2 3 4 ... 11 ... 20 21 22 23 Следующая

MrShoorУчастникwww20 авг. 201722:15#300
Dampire
> Нарушение спеки с моей стороны или особенности конкретно этой
> видеокарты/драйверов?
Нарушение спеки скорее. Intel вообще любитель очень жестко проверять все согласно спецификации.
DampireПостоялецwww21 авг. 201713:17#301
На других интелах ведь работает. Странная хрень. С другой стороны на этих ваших виках по OpenGL binding всегда без location, так что возможно спека не предусматривает.
DampireПостоялецwww15 сен. 201721:54#302
Тут где-то был тред о бранчинге и замене
if(o_diffuse == vec4(0.0,0.0,0.0,0.0))
  o_diffuse = tag
на
o_diffuse = mix(o_diffuse, tag, o_diffuse == vec4(0.0,0.0,0.0,0.0));

Этот подход не работает на как минимум одной amd видеокарте. Альтернативы?

Blew_zcПостоялецwww15 сен. 201722:21#303
Dampire
Не юзать сравнение флоатов на равенство.
DampireПостоялецwww15 сен. 201722:23#304
сравнение флоатов работает нормально(так как я читаю из текстуры с nearest фильтром и могу быть уверен, что там 0.0f), bool не кастуется в float на amd, выдает ошибку и шейдер не компилируется.

Правка: 15 сен. 2017 22:38

Blew_zcПостоялецwww15 сен. 201722:43#305
Dampire
кастуй явно через float(bool)
DampireПостоялецwww15 сен. 201722:45#306
Ответ как обычно на поверхности. Спасибо.
Джек АллигаторПостоялецwww3 окт. 201723:08#307
Есть три потока.
Первый создаёт окно и обрабатывает его события.
Второй вызывает make current и рисует в это окно.
Третий - менеджер текстур. Подгрузка и всякое такое.

Если в третьем вызывать gl функцию, выдаёт "gl function was not loaded".
Т.е. надо в нём тоже вызвать make current. Тогда отваливается поток рендера.

Правильно ли я понимаю, что надо делать shared контекст?
А контекст может быть один для окна, поэтому надо создать окно 1х1.

Тогда остаются вопросы - нафига этот make current если он вызывается один раз, и в чем вообще отличие make current от context sharing?
Все эти штуки - детали реализации opengl на конкретных платформах в конкретных фреймворках, и к спецификации не имеют никакого отношения, верно?

UPD: уже всё работает, но всё же хотелось бы разобраться в деталях.

Правка: 3 окт. 2017 23:29

Blew_zcПостоялецwww3 окт. 201723:36#308
Джек Аллигатор
> Правильно ли я понимаю, что надо делать shared контекст?
В той постановке - да.

> нафига этот make current
Ну, ты можешь создать несколько контекстов и биндить их в любой момент времени.

> в чем вообще отличие make current от context sharing?
Очевидно, контекст хранит полное состояние огл-машины, включая ресурсы. Шаринг же шарит ресурсы (не все) между ними.

Но единственно верный путь - держать один контекст, временами подбрасывая ему задачи в очередь вроде "создай текстуру такого формата из вот этого буфера" или "а тут бы неплохо VBO сгенерить".

Джек АллигаторПостоялецwww3 окт. 201723:37#309
Blew_zc, всё прояснилось. Спасибо!
g-contПостоялецwww4 окт. 201710:57#310
Blew_zc
> Не юзать сравнение флоатов на равенство.
Сравнивать нет, а проверять на ноль - вполне, если конечно этот ноль туда был явно записан.
Blew_zcПостоялецwww4 окт. 201713:13#311
g-cont
Я про общий случай
Fantom09Постоялецwww4 окт. 201714:27#312
Джек Аллигатор
> Есть три потока.
А нужно ли?
Так извращались в древние времена, так как функции glTexImage*D, glBegin/End, Display Lists, glGet*, glIs* и прочее выполняли синхронизацию потоков CPU/GPU.
Сейчас практически все операции ассинхронные (разве что для текстур загрузку нужно делать через PBO), тупо накидываешь все в очередь, при необходимости вставляешь синхронизацию через glFenceSync и будет тебе счастье.
Джек АллигаторПостоялецwww4 окт. 201714:39#313
Fantom09
> А нужно ли?
Смотри видос из соседней темы: http://www.gamedev.ru/code/forum/?id=230075&page=2#m17

Делаю мегатекстуру, во время подгрузки тайлов фпс проседает.

Правка: 4 окт. 2017 14:46

Fantom09Постоялецwww4 окт. 201715:02#314
Джек Аллигатор
> Делаю мегатекстуру, во время подгрузки тайлов фпс проседает.
>
Подгрузки из RAM->VRAM или с диска в VRAM?
Подгрузка данных из файла однозначно должна быть в отдельном потоке, на счет загрузки данных в видеопамять - я через PBO успешно гружу потоковое 4К видео и никаких тормозов не наблюдаю, тоесть проблема с тормозами не из-за самой загрузки текстур а из-за какой-то нежелательной синхронизации. Что именно - это нужно нужно вникать в твою задачу.

Правка: 4 окт. 2017 15:23

Страницы: 1 2 3 4 ... 11 ... 20 21 22 23 Следующая

/ Форум / Программирование игр / Графика

2001—2017 © GameDev.ru — Разработка игр