public Voxel(Shader shader) : base() { this.shader = shader; geometry = new VertexArray(PrimitiveType.Triangles); vertex = geometry.CreateBuffer("vertex", BufferTarget.ArrayBuffer); colors = geometry.CreateBuffer("colors", BufferTarget.ArrayBuffer); normal = geometry.CreateBuffer("normal", BufferTarget.ArrayBuffer); Byte3[] colorData = ColorData(new Byte3(255, 0, 0), new Byte3(0, 255, 255), new Byte3(0, 255, 0), new Byte3(255, 0, 255), new Byte3(0, 0, 255), new Byte3(255, 255, 0)); vertex.BufferData<Byte3>(ref vertexData); colors.BufferData<Byte3>(ref colorData); normal.BufferData<SByte3>(ref normalData); geometry.AddPointer("vertex", new VertexAttribute(this.shader, "vPosition", VertexAttribPointerType.UnsignedByte, 3, 0, false)); geometry.AddPointer("colors", new VertexAttribute(this.shader, "vColor", VertexAttribPointerType.UnsignedByte, 3, 0, true)); geometry.AddPointer("normal", new VertexAttribute(this.shader, "vNormal", VertexAttribPointerType.Byte, 3, 0, true)); }