예제 #1
0
        private void modelPanel1_PreRender(object sender, GLContext context)
        {
            if (pnlOptions.RenderFloor)
            {
                GLTexture _bgTex = context.FindOrCreate <GLTexture>("TexBG", GLTexturePanel.CreateBG);

                float s = 10.0f, t = 10.0f;
                float e = 30.0f;

                context.glDisable((uint)GLEnableCap.Lighting);
                context.glEnable(GLEnableCap.DepthTest);
                context.glPolygonMode(GLFace.Front, GLPolygonMode.Fill);
                context.glPolygonMode(GLFace.Back, GLPolygonMode.Line);

                context.glEnable(GLEnableCap.Texture2D);
                _bgTex.Bind();

                context.glColor(0.5f, 0.5f, 0.75f, 1.0f);
                context.glBegin(GLPrimitiveType.Quads);

                context.glTexCoord(0.0f, 0.0f);
                context.glVertex(-e, 0.0f, -e);
                context.glTexCoord(s, 0.0f);
                context.glVertex(e, 0.0f, -e);
                context.glTexCoord(s, t);
                context.glVertex(e, 0.0f, e);
                context.glTexCoord(0, t);
                context.glVertex(-e, 0.0f, e);

                context.glEnd();
            }
        }
예제 #2
0
        internal unsafe void Render(GLContext ctx)
        {
            if (!_render)
            {
                return;
            }

            if (_boneColor != Color.Transparent)
            {
                ctx.glColor(_boneColor.R, _boneColor.G, _boneColor.B, _boneColor.A);
            }
            else
            {
                ctx.glColor(DefaultBoneColor.R, DefaultBoneColor.G, DefaultBoneColor.B, DefaultBoneColor.A);
            }

            Vector3 v = _frameState._translate;

            ctx.glBegin(GLPrimitiveType.Lines);

            ctx.glVertex(0.0f, 0.0f, 0.0f);
            ctx.glVertex3v((float *)&v);

            ctx.glEnd();

            ctx.glPushMatrix();

            ctx.glTranslate(v._x, v._y, v._z);

            //Render node
            GLDisplayList ndl = ctx.FindOrCreate <GLDisplayList>("BoneNodeOrb", CreateNodeOrb);

            if (_nodeColor != Color.Transparent)
            {
                ctx.glColor(_nodeColor.R, _nodeColor.G, _nodeColor.B, _nodeColor.A);
            }
            else
            {
                ctx.glColor(DefaultNodeColor.R, DefaultNodeColor.G, DefaultNodeColor.B, DefaultNodeColor.A);
            }

            ndl.Call();

            DrawNodeOrients(ctx);

            ctx.glTranslate(-v._x, -v._y, -v._z);

            //Transform Bones
            fixed(Matrix *m = &_frameState._transform)
            ctx.glMultMatrix((float *)m);

            //Render children
            foreach (MDL0BoneNode n in Children)
            {
                n.Render(ctx);
            }

            ctx.glPopMatrix();
        }