Как изменить цвет каркаса с помощью GL в Unity? - PullRequest
0 голосов
/ 26 сентября 2019

Я создал этот простой скрипт, который переключил рендеринг объекта на каркас:

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();
}

Может кто-нибудь дать мне несколько советов, как мне сделать эту работу?

1 Ответ

0 голосов
/ 27 сентября 2019

После GL.wireframe=true цвета вершин обеспечивают цвет вершин, и есть только два способа изменить этот цвет:

  1. Установить материал с помощью пользовательского шейдера, который заменяет цвета вершин и установить для каждого объекта.Или вручную установить цвета вершин в сетках.Второй вариант очень сложен для пользовательского интерфейса и других сеток, генерируемых во время выполнения.
  2. Сделайте постобработку камеры, которая перекрасит выходную текстуру в монохромный цвет (или по желанию, по вашему желанию).Для этой цели вы можете использовать CommandBuffer .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...