我在渲染场景时使用了正交投影。我正在渲染分辨率为 128x128 的纹理。现在我想渲染到具有相同分辨率的其他纹理,但我想获得不同的细节。我发布的图片可能会把事情搞清楚
如您所见,有一个灰色场景和 3 个摄像机渲染相同的东西,但距离和视平面大小不同。由于 3 将在相同分辨率的 3 个纹理上渲染,这些纹理将包含相同的信息但具有不同的细节量。
我可以分 3 次完成此操作,并在每次渲染之前重新定义相机。然而,由于 View 是相同的,只是更近了,我想可能有一些方法可以使用几何着色器来克服这个问题并在一次通过中完成。有什么建议吗?
最佳答案
与 layered rendering ,你可以一次完成。但是,您可以让几何着色器为每一层乘以图元(当然,同时对每个“拷贝”应用不同的变换)。
但是,您不能直接渲染成 3 个不同的纹理对象。要使分层渲染起作用,您需要一些分层纹理对象,例如 array texture。 .由于所有纹理的大小都相同,因此您可以使用具有 3 层的单个阵列纹理而不是 3 个单独的 2D 纹理,但我不能确定这是否适合您的用例。
关于c++ - 使用几何着色器 (openGL) 在单 channel 中渲染多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975636/