Example #1
0
        internal void Render(GLContext ctx)
        {
            if (!_render)
            {
                return;
            }

            //if (_wireframe)
            //    ctx.glPolygonMode(GLFace.FrontAndBack, GLPolygonMode.Line);
            //else
            //    ctx.glPolygonMode(GLFace.FrontAndBack, GLPolygonMode.Fill);


            _manager.PrepareStream(ctx);

            if (_singleBind != null)
            {
                ctx.glPushMatrix();
                Matrix m = _singleBind.Matrix;
                ctx.glMultMatrix((float *)&m);
            }

            if ((_material != null) && (_material._children.Count > 0))
            {
                foreach (MDL0MaterialRefNode mr in _material._children)
                {
                    if (!mr._texture.Enabled)
                    {
                        continue;
                    }

                    mr.Bind(ctx);
                    _manager.Render(ctx, 0);
                }
            }
            else
            {
                _manager.Render(ctx, -1);
            }

            _manager.DetachStreams(ctx);

            if (_singleBind != null)
            {
                ctx.glPopMatrix();
            }
        }