gpt4 book ai didi

带和不带照明的 OpenGL 顶点颜色

转载 作者:行者123 更新时间:2023-12-04 23:44:59 27 4
gpt4 key购买 nike

我有一个渲染立方体的 OpenGL 着色器程序。为了给立方体着色,我将每个顶点的法线传递给顶点着色器,并计算它相对于点光源的灰度阴影。

但是,我现在还想渲染一个红色三角形,其颜色始终为红色并且不依赖于光照。但是如果我像以前一样将法线传递给顶点着色器,三角形的颜色会受到光线的影响。

最好的解决方案是什么?我应该在着色器之前计算顶点颜色,并将其传递给顶点着色器吗?或者这是不好的做法?

最佳答案

主要有两个选项:

  1. 使用一个足够灵活的着色器程序来处理这两种情况。

    对于应用基本光照的着色器,通常会传入确定光照方程中环境和漫反射项权重的值(通常作为制服)。使用这样的着色器,如果您希望部分对象具有纯色,只需通过相应地设置 uniform 来一直增加环境项。

  2. 使用不同的着色器程序。

每个都有好处,您必须找出最适合您的。

方法 1 的主要缺点是您的着色器可能会做比需要更多的工作。在此示例中,它仍将评估实体对象的照明方程式的漫反射项,即使它对最终结果没有贡献。如果绘制大量实体几何图形,可能会影响性能。

方法 2 的主要缺点是您必须切换着色器。如果您经常在实体渲染和光照渲染之间切换,那会损害性能。解决此问题的一种方法是首先绘制所有发光对象,然后绘制所有实体对象,这样您只需每帧切换一次着色器。根据您的软件架构,这可能很容易做到,也可能需要进行重大重组。

关于带和不带照明的 OpenGL 顶点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33962945/

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