首页 > 解决方案 > 如何在 Unity 中使用 GL 更改线框颜色?

问题描述

我创建了这个简单的脚本,将对象渲染切换为线框:

using UnityEngine;

[RequireComponent(typeof(Camera))]
public class PreviewCamera : MonoBehaviour
{
    public bool Wireframe = false;

    void OnPreRender()
    {
        GL.wireframe = this.Wireframe;
    }

    void OnPostRender()
    {
        GL.wireframe = false;
    }
}

我将此脚本附加到我的相机上,一切似乎都可以正常工作,但我还想添加更改线框颜色的功能,但到目前为止还没有运气。

我尝试使用:GL.Color(/*Some Color*/);GL.Begin() and GL.End(),也许我只是错过了一些东西,但似乎没有一个能奏效。

void OnPreRender()
{
    GL.Begin(GL.LINES);
    GL.Color(Color.red);
    GL.wireframe = this.Wireframe;
    GL.End();
}

有人可以给我一些关于如何使这项工作的建议吗?

标签: c#unity3d

解决方案


GL.wireframe=true顶点颜色提供线框颜色之后,只有两种方法可以更改该颜色:

  1. 使用替换顶点颜色的自定义着色器设置材质并设置到每个对象。或者手动设置网格中的顶点颜色。对于 UI 和其他运行时生成的网格,第二个变体非常复杂。
  2. 进行相机后期处理,将输出纹理重新着色为单色(或自定义图案,如您所愿)。您可以为此目的使用CommandBuffer 。

推荐阅读