public void CreateRectangle2D()
{
/// TODO: this RenderOp should really be re-used between MLight objects,
/// not generated every time
renderOperation.vertexData = new VertexData();
renderOperation.indexData = null;
renderOperation.vertexData.vertexCount = 4;
renderOperation.vertexData.vertexStart = 0;
renderOperation.operationType = OperationType.TriangleStrip;
renderOperation.useIndices = false;
VertexDeclaration decl = renderOperation.vertexData.vertexDeclaration;
VertexBufferBinding bind = renderOperation.vertexData.vertexBufferBinding;
decl.AddElement( 0, 0, VertexElementType.Float3, VertexElementSemantic.Position );
HardwareVertexBuffer vbuf = HardwareBufferManager.Instance.CreateVertexBuffer( decl.GetVertexSize( 0 ),
renderOperation.vertexData.vertexCount,
BufferUsage.StaticWriteOnly );
// Bind buffer
bind.SetBinding( 0, vbuf );
// Upload data
float[] data = new float[] {
-1, 1,-1, // corner 1
-1,-1,-1, // corner 2
1, 1,-1, // corner 3
1,-1,-1 }; // corner 4
vbuf.WriteData( 0, sizeof( float ) * data.Length, data, true );
// Set bounding
this.box = new AxisAlignedBox( new Vector3( -10000, -10000, -10000 ), new Vector3( 10000, 10000, 10000 ) );
this._radius = 15000;
this._ignoreWorld = true;
}