/// <summary> /// /// </summary> /// <returns></returns> public IndexBuffer GetIndexBuffer() { if (indexBuffer == null) { ushort[] faces = model.GetFaces(); int length = faces.Length; OneIndexBuffer buffer = GLBuffer.Create(IndexBufferElementType.UShort, length, DrawMode.Triangles, BufferUsage.StaticDraw); unsafe { IntPtr pointer = buffer.MapBuffer(MapBufferAccess.WriteOnly); var array = (ushort *)pointer; for (int i = 0; i < faces.Length; i++) { array[i] = (ushort)(faces[i] - 1); } buffer.UnmapBuffer(); } this.indexBuffer = buffer; } return(indexBuffer); }
/// <summary> /// /// </summary> /// <returns></returns> public IndexBufferPtr GetIndex() { if (indexBufferPtr == null) { using (var buffer = new OneIndexBuffer <ushort>(DrawMode.Triangles, BufferUsage.StaticDraw)) { ushort[] faces = model.GetFaces(); buffer.Create(faces.Length); unsafe { var array = (ushort *)buffer.Header.ToPointer(); for (int i = 0; i < faces.Length; i++) { array[i] = (ushort)(faces[i] - 1); } } indexBufferPtr = buffer.GetBufferPtr() as IndexBufferPtr; } } return(indexBufferPtr); }