public void UpdateGeometry() { if (VertexArray == null) { return; } int updateThreadID = GlobalEnvironment.UpdateThreadID; int curThreadID = System.Threading.Thread.CurrentThread.ManagedThreadId; if (updateThreadID != curThreadID) { return; } VdsVec3d[] vArray = VertexArray.ToArray(); VdsVec3d[] nArray = null; if (NormalArray != null) { nArray = NormalArray.ToArray(); } else { nArray = new VdsVec3d[0]; } VdsVec4d[] cArray = null; if (ColorArray != null) { cArray = ColorArray.ToArray(); } else { cArray = new VdsVec4d[0]; } VdsVec2d[] tArray = null; if (TexCoordArray != null) { tArray = TexCoordArray.ToArray(); } else { tArray = new VdsVec2d[0]; } VdsVec4d[] maturalArray = null; if (AmbientMatural == null && DiffuseMatural == null && SpecularMatural == null && EmissionMatural == null) { maturalArray = new VdsVec4d[0]; } else { maturalArray = new VdsVec4d[4]; if (AmbientMatural == null) { maturalArray[0] = new VdsVec4d(0.8, 0.8, 0.8, 1.0); } else { maturalArray[0] = AmbientMatural; } if (DiffuseMatural == null) { maturalArray[1] = new VdsVec4d(0.9, 0.9, 0.9, 1.0); } else { maturalArray[1] = DiffuseMatural; } if (SpecularMatural == null) { maturalArray[2] = new VdsVec4d(0.95, 0.95, 0.95, 1.0); } else { maturalArray[2] = SpecularMatural; } if (EmissionMatural == null) { maturalArray[3] = new VdsVec4d(0.1, 0.1, 0.1, 1.0); } else { maturalArray[3] = EmissionMatural; } } string tFileName = ""; if (TextureFileName != null) { tFileName = TextureFileName; } int drawMode = 0; switch (DrawMode) { case GeometryDrawModel.POINTS: drawMode = 0; break; case GeometryDrawModel.LINES: drawMode = 1; break; case GeometryDrawModel.LINE_STRIP: drawMode = 3; break; case GeometryDrawModel.LINE_LOOP: drawMode = 2; break; case GeometryDrawModel.TRIANGLES: drawMode = 4; break; case GeometryDrawModel.TRIANGLE_STRIP: drawMode = 5; break; case GeometryDrawModel.TRIANGLE_FAN: drawMode = 6; break; case GeometryDrawModel.QUADS: drawMode = 7; break; case GeometryDrawModel.QUAD_STRIP: drawMode = 8; break; } IUpdateGeometry(this.NativeHandle, vArray, nArray, cArray, tArray, drawMode, (int)CullFaceMode, tFileName, maturalArray); }