c++ - 使用几何着色器 (openGL) 在单 channel 中渲染多次

标签 c++ opengl

我在渲染场景时使用了正交投影。我正在渲染分辨率为 128x128 的纹理。现在我想渲染到具有相同分辨率的其他纹理,但我想获得不同的细节。我发布的图片可能会把事情搞清楚

enter image description here

如您所见,有一个灰色场景和 3 个摄像机渲染相同的东西,但距离和视平面大小不同。由于 3 将在相同分辨率的 3 个纹理上渲染,这些纹理将包含相同的信息但具有不同的细节量。

我可以分 3 次完成此操作,并在每次渲染之前重新定义相机。然而,由于 View 是相同的,只是更近了,我想可能有一些方法可以使用几何着色器来克服这个问题并在一次通过中完成。有什么建议吗?

最佳答案

layered rendering ,你可以一次完成。但是,您可以让几何着色器为每一层乘以图元(当然,同时对每个“拷贝”应用不同的变换)。

但是,您不能直接渲染成 3 个不同的纹理对象。要使分层渲染起作用,您需要一些分层纹理对象,例如 array texture。 .由于所有纹理的大小都相同,因此您可以使用具有 3 层的单个阵列纹理而不是 3 个单独的 2D 纹理,但我不能确定这是否适合您的用例。

关于c++ - 使用几何着色器 (openGL) 在单 channel 中渲染多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975636/

相关文章:

c++ - 定义一个内部有结构的 map

c++ - 在 C++ 中为用户定义的对象使用优先级时遇到问题

java - GLFWKeyCallback 类型的 free() 方法未定义

opengl - CMake:opengl 包含目录在不同平台上的命名不同

c++ - OpenGl:glRotatef 机制以及如何在不移动的情况下围绕自身旋转正方形

c# - 1 字节对齐会导致内存损坏吗?

c++ - 当在 vector 上使用调整大小时, vector 内部结构中的 unique_ptr 不会编译

c++ - 提升多种可能性的变体

c++ - opengl 程序在 glBegin(GL_QUADS) 上崩溃

python - 为什么我的 FPS 相机在滚动?在 Python 中使用欧拉角(不是四元数)实现