gpt4 book ai didi

opengl - 渲染到纹理的一部分

转载 作者:行者123 更新时间:2023-12-02 10:19:52 27 4
gpt4 key购买 nike

由于 OpenGL 中使用几何着色器的分层渲染在某些驱动程序/硬件上似乎有点棘手,因此我想用我自己的解决方案替换该功能。这是通过使用大纹理作为渲染目标,例如分辨率为 300²。然后通过渲染纹理中的 100² block 来模拟分层渲染。使用该分辨率,将产生 9 个图 block /层,如下面的模型所示:

Tiles

问题是;如何使用 OpenGL 做到这一点?据说是在几何着色器的帮助下,一次性将场景渲染到不同的图 block 上。?

最佳答案

没有简单的方法可以做到这一点。您可以使用几何着色器将其组合在一起,但它很可能会很慢,因为您必须执行大量几何实例,然后还使用几何着色器进行顶点着色,因为顶点着色器已退出游戏。

解决问题的基本方法:

  • 将顶点着色器留空,仅返回顶点不变
  • 在几何着色器中,为每个三角形创建 8 个新实例(总共将有 9 个三角形)
  • 在每个三角形上运行一个函数来投影三角形。根据您的屏幕截图,您需要将 9 个不同的 View 矩阵发送到几何着色器。
  • 现在排列三角形,以便每个三角形都渲染在图像的不同部分。请注意,投影后,坐标的范围为 [-1; 1]所以你需要将每个三角形的坐标除以3,然后将相应的三角形平移1/3。
  • 如果计算每个像素的 phong 着色,则需要将相机位置发送到每个顶点的片段着色器,因为片段着色器不知道屏幕被划分,并且您有 9 个不同的相机位置。
  • 关于opengl - 渲染到纹理的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4234387/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com