using UnityEngine;
public class TestGL2 : MonoBehaviour {
Vector3[] m_VtxArray; // 頂点の配列
Vector2[] m_UvArray; // UVの配列
Vector2 m_uvOffset = Vector2.zero; // UVのオフセット
public Material m_Mtl; // 使用するマテリアル
public void Start () {
// 頂点とUVの作成
m_VtxArray = new Vector3[4];
m_UvArray = new Vector2[4];
// 時計回りだと描画される?
m_VtxArray[0] = new Vector3(0.25f, 0.25f, 0.0f); // BottomLeft
m_VtxArray[1] = new Vector3(0.25f, 0.95f, 0.0f); // TopLeft
m_VtxArray[2] = new Vector3(0.75f, 0.75f, 0.0f); // TopRight
m_VtxArray[3] = new Vector3(0.75f, 0.25f, 0.0f); // BottomRight
m_UvArray[0] = new Vector2(0.0f, 0.0f);
m_UvArray[1] = new Vector2(0.0f, 1.0f);
m_UvArray[2] = new Vector2(1.0f, 1.0f);
m_UvArray[3] = new Vector2(1.0f, 0.0f);
}
void OnRenderObject() {
DrawQuad();
}
void DrawQuad() {
m_Mtl.SetPass(0);
GL.PushMatrix();
GL.LoadOrtho(); // 正射影 左下が 0, 0, 0
//GL.LoadIdentity();
//GL.LoadProjectionMatrix(Matrix4x4.identity);
GL.Begin(GL.QUADS);
#if false
// 反時計回り 描画されない
for(int i = 3; i >= 0; i--) {
GL.TexCoord(m_UvArray[i] + m_uvOffset);
GL.Vertex(m_VtxArray[i]);
}
#else
// 時計回り 描画された
for(int i = 0; i < 4; i++) {
GL.TexCoord(m_UvArray[i] + m_uvOffset);
GL.Vertex(m_VtxArray[i]);
}
#endif
GL.End();
GL.PopMatrix();
m_uvOffset.x -= 0.001f;
m_uvOffset.y -= 0.001f;
}
}
|