Может ли SoOffscreenRenderer использовать плитки размером более 1024
Класс закадрового рендеринга coin3d SoOffscreenRenderer
способен отображать большие изображения (например, 4000 x 2000 пикселей), которые не помещаются на экран или в буфер рендеринга. Это делается путем разбиения изображения на плитки, которые отображаются одна за другой, где размер этих плиток по умолчанию равен 1024 x 1024.
Я посмотрел на код SoOffscreenRenderer
а также CoinOffscreenGLCanvas
и нашел переменные среды COIN_OFFSCREENRENDERER_TILEWIDTH
COIN_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.