示例#1
0
        public void InitializeInstancing(ITransformable[] instances)
        {
            InitializeInstancingStep1();

            // instance buffer
            instanceVertices = new HardwareInstanceVertex[instances.Length];
            for (int id = 0; id < instances.Length; ++id)
            {
                Matrix  worldMatrix = instances[id].GlobalTransformation;
                Vector4 row1        = new Vector4(worldMatrix.M11, worldMatrix.M21, worldMatrix.M31, worldMatrix.M41);
                Vector4 row2        = new Vector4(worldMatrix.M12, worldMatrix.M22, worldMatrix.M32, worldMatrix.M42);
                Vector4 row3        = new Vector4(worldMatrix.M13, worldMatrix.M23, worldMatrix.M33, worldMatrix.M43);
                instanceVertices[id] = new HardwareInstanceVertex(row1, row2, row3);
            }

            InitializeInstancingStep3(instances.Length);
        }
示例#2
0
        public void InitializeInstancing(Matrix[] worldMatrices)
        {
            InitializeInstancingStep1();

            // instance buffer
            instanceVertices = new HardwareInstanceVertex[worldMatrices.Length];
            for (int id = 0; id < worldMatrices.Length; ++id)
            {
                Matrix  worldMatrix = worldMatrices[id];
                Vector4 row1        = new Vector4(worldMatrix.M11, worldMatrix.M21, worldMatrix.M31, worldMatrix.M41);
                Vector4 row2        = new Vector4(worldMatrix.M12, worldMatrix.M22, worldMatrix.M32, worldMatrix.M42);
                Vector4 row3        = new Vector4(worldMatrix.M13, worldMatrix.M23, worldMatrix.M33, worldMatrix.M43);
                instanceVertices[id] = new HardwareInstanceVertex(row1, row2, row3);
            }

            InitializeInstancingStep3(worldMatrices.Length);
        }