C# 如何使用GL函数在Unity3D上显示纹理

C# 如何使用GL函数在Unity3D上显示纹理,c#,unity3d,C#,Unity3d,我试图向GL.QUADS显示图像。但是屏幕上只有一个黑色的矩形显示。我怎样才能修好它 这是我的脚本代码,我将组件添加到MainCamera using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Material mat; void OnPostRender() { if (!mat) { Debug.L

我试图向GL.QUADS显示图像。但是屏幕上只有一个黑色的矩形显示。我怎样才能修好它

这是我的脚本代码,我将组件添加到MainCamera

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public Material mat;
    void OnPostRender() {
        if (!mat) {
            Debug.LogError("Please Assign a material on the inspector");
            return;
        }
        GL.PushMatrix();
        mat.SetPass(1);
        GL.LoadOrtho();
        GL.Begin(GL.QUADS);
        GL.TexCoord2(0, 0);
        GL.Vertex3(0.25F, 0.25F, 0);
        GL.TexCoord2(0, 1);
        GL.Vertex3(0.25F, 0.75F, 0);
        GL.TexCoord2(1, 1);
        GL.Vertex3(0.75F, 0.75F, 0);
        GL.TexCoord2(1, 0);
        GL.Vertex3(0.75F, 0.25F, 0);
        GL.End();
        GL.PopMatrix();
    }
}
我使用“标准”着色器创建了一个名为“CrossHairMaterial”的自定义材质:

最后它显示了一个黑色的矩形。 Unity的API需要顶点着色器才能工作。创建新材质时使用的默认标准着色器将不起作用,因为它不是顶点着色器

Unity中的任何顶点着色器也应该工作

首先,更改
mat.SetPass(1)
材料设置过程(0)

以下是受支持的着色器:

1粒子-->顶点照明混合

2.unlight-->颜色

3.unlight-->纹理

4.unlight-->透明

应该工作的Lagacy着色器:

5。传统着色器-->透明-->顶点照明

6。传统着色器-->顶点照明

我建议您使用#2#3#4,具体取决于您是否需要材质中的纹理或透明度

使用未发光-->纹理进行测试:


您的自定义
材料是否附加到
四元组
。但是怎么做呢?@Hristo不需要这么做。这不是模型/网格文件。这是从OpenGL构建的。再看一遍代码。@Programmer好的,那么他只需要将脚本附加到quad?我很困惑,MyGlDraw脚本做什么?