Может ли SoOffscreenRenderer использовать плитки размером более 1024

Класс закадрового рендеринга coin3d SoOffscreenRenderer способен отображать большие изображения (например, 4000 x 2000 пикселей), которые не помещаются на экран или в буфер рендеринга. Это делается путем разбиения изображения на плитки, которые отображаются одна за другой, где размер этих плиток по умолчанию равен 1024 x 1024.

Я посмотрел на код SoOffscreenRenderer а также CoinOffscreenGLCanvas и нашел переменные среды COIN_OFFSCREENRENDERER_TILEWIDTHCOIN_OFFSCREENRENDERER_TILEHEIGHT, Я мог бы изменить размер плитки, используя эти переменные, но только до размеров, меньших 1024. Я мог бы создавать плитки с 512 x 512 пикселей, а также с 768 x 768. Когда я использовал значения больше 1024, полученные плитки всегда имели размер 1024 х 1024

Можно ли использовать плитки большего размера, например 2048 x 2048 или 4096 x 4096, и как мне это сделать?

1 ответ

Можно использовать более крупные плитки, и монета делает это автоматически. Он узнает, какие размеры листов работают, запросив драйвер видеокарты.

От CoinOffscreenGLCanvas.cpp:

// getMaxTileSize () возвращает теоретический максимум, собранный // из различной информации драйвера GL. Мы не гарантируем, что сможем // выделить буфер такого размера - например, из-за ограничений памяти // на карте gfx.

Причина, по которой это не сработало, заключалась в том, что переменная окружения COIN_OFFSCREENRENDERER_MAX_TILESIZE был установлен где-то в нашем приложении, используя coin_setenv("COIN_OFFSCREENRENDERER_MAX_TILESIZE", "1024", 1);, Удаление этого вызова позволило использовать плитки большего размера.

В CoinOffscreenGLCanvas::getMaxTileSize(void)переменная COIN_OFFSCREENRENDERER_MAX_TILESIZE считывается и размер плитки фиксируется соответственно.

На моем старом компьютере он генерировал плитки размером 1024, но на более новой машине они были размером 4096.

Другие вопросы по тегам