Объявление
public static void MultiTexCoord3(int unit, float x, float y, float z);Описание
Устанавливает текущую координату текстуры (x,y,z) в фактическую единицу
текстуры.
В OpenGL это соответствует glMultiTexCoord
для данного модуля текстуры, если доступно мультитекстурирование. В других графических API эмулируется та же функциональность.
Компонент Z используется только в следующих случаях:
1. Вы получаете доступ к кубической карте (к которой вы обращаетесь с векторной координатой, следовательно, x, y и z).
2. Вы выполняете «проективное текстурирование», когда координаты X и Y делятся на Z, чтобы получить окончательную координату. Это было бы в основном полезно для отражений воды и подобных вещей.
Эту функцию можно вызывать только между функциями GL.Begin и GL.End.
using UnityEngine;
public class Example : MonoBehaviour
{
// Changes between two textures assigned to a material
// When pressed space
Material mat;
bool flagTex = true;
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (flagTex)
{
flagTex = false;
}
else
{
flagTex = true;
}
}
}
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);
if (flagTex)
{
GL.MultiTexCoord3(0, 0, 0, 0); // main texture
}
else
{
GL.MultiTexCoord3(1, 0, 0, 0); // second texture
}
GL.Vertex3(0.25f, 0.25f, 0);
if (flagTex)
{
GL.MultiTexCoord3(0, 0, 1, 0);
}
else
{
GL.MultiTexCoord3(1, 0, 1, 0);
}
GL.Vertex3(0.25f, 0.75f, 0);
if (flagTex)
{
GL.MultiTexCoord3(0, 1, 1, 0);
}
else
{
GL.MultiTexCoord3(1, 1, 1, 0);
}
GL.Vertex3(0.75f, 0.75f, 0);
if (flagTex)
{
GL.MultiTexCoord3(0, 1, 0, 0);
}
else
{
GL.MultiTexCoord3(1, 1, 0, 0);
}
GL.Vertex3(0.75f, 0.25f, 0);
GL.End();
GL.PopMatrix();
}
}