SoOffscreenRenderer可以使用大于1024的图块

时间:2017-04-11 15:18:25

标签: coin3d

coin3d屏幕外渲染类SoOffscreenRenderer能够渲染大图像(例如4000 x 2000像素),这些图像不适合屏幕或渲染缓冲区。这是通过将图像分割成一个接一个渲染的图块来完成的,其中这些图块的默认大小为1024 x 1024。

我查看了SoOffscreenRendererCoinOffscreenGLCanvas的代码,找到了环境变量COIN_OFFSCREENRENDERER_TILEWIDTH COIN_OFFSCREENRENDERER_TILEHEIGHT。我可以使用这些变量更改拼贴大小,但仅限于小于1024的大小。我可以创建512 x 512像素的拼贴,也可以创建768 x 768.当我使用大于1024的值时,生成的拼贴总是大小为1024 x 1024。

是否可以使用更大的瓷砖尺寸,如2048 x 2048或4096 x 4096,我该怎么做?

1 个答案:

答案 0 :(得分:0)

可以使用更大的瓷砖和硬币自动完成。它将通过查询显卡驱动程序找出哪些瓷砖尺寸有效。

来自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.