GLを使用すると描画できた
Editor/EditWindowD.cs
using UnityEngine;
using UnityEditor;
public class EditWindowD : EditorWindow {
Material m_Material; // マテリアル
Vector2 [] m_VecArray; // 頂点の配列
int m_VecNum = 3; // 頂点数
// メニューに追加
[MenuItem ("Window/EditWindowD")]
static void Init() {
EditWindowD window = (EditWindowD)EditorWindow.GetWindow( typeof (EditWindowD) );
window.Show();
}
// スクリプトのロード時に呼ばれる ScriptableObject.OnEnable()
void OnEnable() {
CreateVertexArray();
CreateMaterial();
}
// エディタウィンドウのGUI処理をここに記述 EditorWindow.OnGUI()
void OnGUI() {
// 再描画イベント時に描画処理を行う
if (EventType.Repaint != Event.current.type) return;
// 実行するとウィンドウが真っ白
//GL.Clear(false, true, Color.white);
m_Material.SetPass(0);
DrawLine();
}
// マテリアルの作成
void CreateMaterial() {
m_Material = new Material( "Shader \"Lines/Colored_Blended\" {" +
"SubShader { Pass { " +
" Blend SrcAlpha OneMinusSrcAlpha " +
" ZWrite Off Cull Off Fog { Mode Off } " +
" BindChannels {" +
" Bind \"vertex\", vertex" +
" Bind \"color\", color" +
"} } } }" );
m_Material.hideFlags = HideFlags.HideAndDontSave;
m_Material.shader.hideFlags = HideFlags.HideAndDontSave;
}
// 頂点の配列を作成
void CreateVertexArray() {
m_VecArray = new Vector2[m_VecNum];
m_VecArray[0] = new Vector2(50, 10);
m_VecArray[1] = new Vector2(10, 60);
m_VecArray[2] = new Vector2(90, 60);
}
// 線分の描画
void DrawLine() {
GL.Color(Color.blue);
GL.Begin( GL.LINES );
for(int i = 0; i < m_VecNum; i++) {
int idx0 = i;
int idx1 = (i == m_VecNum - 1) ? 0 : idx0 + 1;
GL.Vertex(m_VecArray[idx0]);
GL.Vertex(m_VecArray[idx1]);
}
GL.End();
}
}