为整个模型预计算纹理,OpenGL

Precompute Texture for entire model, OpenGL

一点背景。我目前有一个应用程序可以执行大量花哨的计算来动态计算纹理以显示在建筑模型上。想想热图、轮廓线等。我把所有这些都做好了,一切都很好。现在我正试图让事情尽可能高效,因为我需要能够在低端机器上演示应用程序。我尝试这样做的方法是提前为整个模型生成所有纹理,然后静态渲染场景。这在理论上应该使整个事情 运行 非常顺利。

那么我的问题是,有没有一种方法可以设计顶点着色器,而不是向片段着色器提供可见片段,而是根据其纹理坐标放置每个片段?假设我有一个完全 uv 映射的模型。这样我就可以渲染一个可以在 运行 时间直接映射到模型上的纹理。这可能吗?

编辑:我被要求添加细节,所以我会尽力而为。我想要的是“预烘焙”一个纹理,这样在 运行 时间我所要做的就是对每个片段进行纹理查找,而不是昂贵的纹理生成序列。这样,我问是否有可能设计一个顶点着色器,而不是将片段正常传递给片段着色器,而是根据模型的纹理坐标传递它们。因此,我的片段着色器将接收模型上的每个点,而不仅仅是那些可见的点。

像处理静态纹理一样创建模型的 UV 展开。然后生成纹理创建一个顶点着色器,将 gl_Position 设置为 UV 坐标(当然你必须将 [0, 1]² UV 范围映射到 [-1,1]² XY 范围对于 gl_Position,并像往常一样发送所有其他制服。使用它,您可以通过渲染到纹理来使用现有的片段着色器烘焙模型的纹理。