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); } } }
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); } } }