Beispiel #1
0
 /// <summary>
 /// Create submesh from ModelFile's Geometry entry<para/>
 /// Создание сабмеша из данных Geometry
 /// </summary>
 /// <param name="g">Loaded Geometry<para/>Загруженая Geometry</param>
 public SubMesh(Branch parent, Model model, ModelFile.Geometry g)
 {
     // Setting up the fields
     // Настройка полей
     State       = ReadyState.Empty;
     Parent      = parent;
     ParentModel = model;
     geometry    = g;
 }
Beispiel #2
0
            /// <summary>
            /// Release memory used by this mesh<para/>
            /// Очистка памяти, используемой этим мешем
            /// </summary>
            public void Release()
            {
                // Removing surfaces
                // Удаляем поверхности
                foreach (Surface s in Surfaces)
                {
                    s.IndexData = null;
                    s.Material  = null;
                    if (s.IndexBuffer != 0)
                    {
                        GL.DeleteBuffer(s.IndexBuffer);
                    }
                }
                geometry    = null;
                Parent      = null;
                ParentModel = null;

                // Removing buffers
                // Удаляем буфферы
                vertexData     = null;
                normalData     = null;
                colorData      = null;
                texCoord1Data  = null;
                texCoord2Data  = null;
                boneData       = null;
                boneWeightData = null;
                if (vertexBuffer != 0)
                {
                    GL.DeleteBuffer(vertexBuffer);
                }
                if (normalBuffer != 0)
                {
                    GL.DeleteBuffer(normalBuffer);
                }
                if (colorBuffer != 0)
                {
                    GL.DeleteBuffer(colorBuffer);
                }
                if (tex1Buffer != 0)
                {
                    GL.DeleteBuffer(tex1Buffer);
                }
                if (tex2Buffer != 0)
                {
                    GL.DeleteBuffer(tex2Buffer);
                }
                if (boneBuffer != 0)
                {
                    GL.DeleteBuffer(boneBuffer);
                }
                if (boneWeightBuffer != 0)
                {
                    GL.DeleteBuffer(boneWeightBuffer);
                }
            }
Beispiel #3
0
 /// <summary>
 /// Setup uniforms for specified surface<para/>
 /// Установка параметров шейдера для поверхности
 /// </summary>
 /// <param name="surf">Surface<para/>Поверхность</param>
 /// <param name="mat">Material<para/>Материал поверхности</param>
 public override void SetupSurface(Model.SubMesh.Surface surf, Model.Material mat, ModelFile.Geometry geom, Model.SubMesh subMesh)
 {
     GL.Uniform1(StaticShader.AppearValue, Fading ? FadingDelta : 1f);
     GL.Uniform3(StaticShader.AmbientColor, Renderer.SkyState.AmbientStatic);
     GL.Uniform3(StaticShader.DiffuseColor, Renderer.SkyState.DirectLight);
     GL.Uniform4(StaticShader.TintColor, new Color4(mat.Color[0], mat.Color[1], mat.Color[2], mat.Color[3]));
 }
Beispiel #4
0
 /// <summary>
 /// Setup uniforms for specified surface<para/>
 /// Установка параметров шейдера для поверхности
 /// </summary>
 /// <param name="surf">Surface<para/>Поверхность</param>
 /// <param name="mat">Material<para/>Материал поверхности</param>
 public abstract void SetupSurface(Model.SubMesh.Surface surf, Model.Material mat, ModelFile.Geometry geom, Model.SubMesh subMesh);
Beispiel #5
0
        /// <summary>
        /// Setup uniforms for specified surface<para/>
        /// Установка параметров шейдера для поверхности
        /// </summary>
        /// <param name="surf">Surface<para/>Поверхность</param>
        /// <param name="mat">Material<para/>Материал поверхности</param>
        public override void SetupSurface(Model.SubMesh.Surface surf, Model.Material mat, ModelFile.Geometry geom, Model.SubMesh subMesh)
        {
            //GL.Uniform1(StaticShader.AppearValue, Fading ? FadingDelta : 1f);
            //GL.Uniform3(StaticShader.AmbientColor, Renderer.SkyState.AmbientStatic);
            //GL.Uniform3(StaticShader.DiffuseColor, Renderer.SkyState.DirectLight);
            //GL.Uniform4(StaticShader.TintColor, new Color4(mat.Color[0], mat.Color[1], mat.Color[2], mat.Color[3]));

            GL.EnableVertexAttribArray(SkinnedShader.BoneIndexAttrib);
            GL.BindBuffer(BufferTarget.ArrayBuffer, subMesh.BoneIndexBuffer);
            GL.VertexAttribPointer(SkinnedShader.BoneIndexAttrib, 4, VertexAttribPointerType.Byte, false, 0, IntPtr.Zero);
            GL.EnableVertexAttribArray(SkinnedShader.BoneWeightAttrib);
            GL.BindBuffer(BufferTarget.ArrayBuffer, subMesh.BoneWeightBuffer);
            GL.VertexAttribPointer(SkinnedShader.BoneWeightAttrib, 4, VertexAttribPointerType.Float, false, 0, IntPtr.Zero);
        }