C# 如何使用GL函数在Unity3D上显示纹理
我试图向GL.QUADS显示图像。但是屏幕上只有一个黑色的矩形显示。我怎样才能修好它 这是我的脚本代码,我将组件添加到MainCameraC# 如何使用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
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脚本做什么?