コード例 #1
0
ファイル: SBSkeleton.cs プロジェクト: youdontown/StudioSB
        public void RenderShader(Camera camera)
        {
            GL.LineWidth(1f);

            if (bonePrism == null)
            {
                bonePrism = new BonePrism();
            }

            var boneShader = ShaderManager.GetShader("Bone");

            boneShader.UseProgram();

            boneShader.SetMatrix4x4("mvpMatrix", camera.MvpMatrix);

            var color = Tools.CrossMath.ColorToVector(ApplicationSettings.BoneColor);

            var selcolor = Tools.CrossMath.ColorToVector(ApplicationSettings.SelectedBoneColor);

            boneShader.SetMatrix4x4("rotation", ref prismRotation);

            foreach (var b in Bones)
            {
                if (b.Selected)
                {
                    boneShader.SetVector4("color", selcolor);
                }
                else
                {
                    boneShader.SetVector4("color", color);
                }

                Matrix4 transform = b.AnimatedWorldTransform;
                boneShader.SetMatrix4x4("bone", ref transform);
                boneShader.SetInt("hasParent", b.Parent != null ? 1 : 0);
                if (b.Parent != null)
                {
                    Matrix4 parenttransform = b.Parent.AnimatedWorldTransform;
                    boneShader.SetMatrix4x4("parent", ref parenttransform);
                }
                bonePrism.Draw(boneShader);

                // leaf node
                boneShader.SetInt("hasParent", 0);
                bonePrism.Draw(boneShader);
            }

            if (ApplicationSettings.RenderBoneNames)
            {
                foreach (var b in Bones)
                {
                    TextRenderer.Draw(camera, b.Name, b.AnimatedWorldTransform);
                }
            }
        }
コード例 #2
0
ファイル: SBSkeleton.cs プロジェクト: ScanMountGoat/StudioSB
        public void RenderShader(Camera camera)
        {
            GL.LineWidth(1f);

            if (bonePrism == null)
            {
                bonePrism = new BonePrism();
            }

            var boneShader = ShaderManager.GetShader("Bone");

            boneShader.UseProgram();

            boneShader.SetVector4("boneColor", new Vector4(ApplicationSettings.BoneColor.R / 255f, ApplicationSettings.BoneColor.G / 255f, ApplicationSettings.BoneColor.B / 255f, ApplicationSettings.BoneColor.A / 255f));

            boneShader.SetMatrix4x4("rotation", ref prismRotation);

            foreach (var b in Bones)
            {
                Matrix4 transform = b.AnimatedWorldTransform;
                boneShader.SetMatrix4x4("bone", ref transform);
                boneShader.SetInt("hasParent", b.Parent != null ? 1 : 0);
                if (b.Parent != null)
                {
                    Matrix4 parenttransform = b.Parent.AnimatedWorldTransform;
                    boneShader.SetMatrix4x4("parent", ref parenttransform);
                }
                bonePrism.Draw(boneShader, camera);

                // leaf node
                boneShader.SetInt("hasParent", 0);
                bonePrism.Draw(boneShader, null);
            }

            if (ApplicationSettings.RenderBoneNames)
            {
                foreach (var b in Bones)
                {
                    TextRenderer.Draw(camera, b.Name, b.AnimatedWorldTransform);
                }
            }
        }