我正在开发一种渲染到纹理的过程,它涉及使用多个摄像机来渲染整个几何场景。这些摄像机的输出然后通过将每个几何体的顶点坐标转换为屏幕坐标在顶点着色器中直接组合和映射到屏幕上(我在这里使用GLSL)。
这个过程很好用,但我意识到一个小问题:我创建的每个RTT摄像机都会创建一个与屏幕输出相同大小的纹理。也就是说,如果我的视口大小为1024x1024,即使几何体占据屏幕的256x256部分,每个RTT摄像机也会在1024x1024纹理中渲染256x256几何体。
解决方案似乎很简单-调整RTT摄像机纹理大小以匹配几何体实际占据的屏幕区域,但我不知道如何做到这一点。也就是说,我如何确定几何体占据屏幕的256x256区域,以便相应地设置RTT摄像机的输出纹理为256x256像素?
我使用的API(OpenSceneGraph)使用轴对齐边界框,所以我没有办法...
你有什么想法吗?
这个过程很好用,但我意识到一个小问题:我创建的每个RTT摄像机都会创建一个与屏幕输出相同大小的纹理。也就是说,如果我的视口大小为1024x1024,即使几何体占据屏幕的256x256部分,每个RTT摄像机也会在1024x1024纹理中渲染256x256几何体。
解决方案似乎很简单-调整RTT摄像机纹理大小以匹配几何体实际占据的屏幕区域,但我不知道如何做到这一点。也就是说,我如何确定几何体占据屏幕的256x256区域,以便相应地设置RTT摄像机的输出纹理为256x256像素?
我使用的API(OpenSceneGraph)使用轴对齐边界框,所以我没有办法...
你有什么想法吗?