c# - 如何在 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();
}
有人可以给我一些关于如何使这项工作的建议吗?
解决方案
在GL.wireframe=true
顶点颜色提供线框颜色之后,只有两种方法可以更改该颜色:
- 使用替换顶点颜色的自定义着色器设置材质并设置到每个对象。或者手动设置网格中的顶点颜色。对于 UI 和其他运行时生成的网格,第二个变体非常复杂。
- 进行相机后期处理,将输出纹理重新着色为单色(或自定义图案,如您所愿)。您可以为此目的使用CommandBuffer 。
推荐阅读
- docker - Rsyslog 不过滤表达式
- python - 如何使用 dnnlib.tflib.network.Network 获得中间层输出
- python - 如何在 django+fastcgi+IIS 设置中销毁资源?
- javascript - 如何找到所有可见元素中最重要的元素?(离用户最近)
- python - 优化解决回文的时间/空间复杂度
- android - Android Espresso:如何在 TextInputLayout 中嵌入的 editText 中键入文本
- git - Git rebase 不在合并基础上应用提交
- c - 在函数调用中获取 Malloc() 损坏的顶部大小
- python - 使用python将文本数据解析为JSON格式
- python - 最新版本的 Django 教程说明似乎错误