private SceneNodeBase GetRootNode() { var rootNode = new GroupNode(); { var axisNode = AxisNode.Create(); axisNode.Scale = new vec3(1, 1, 1) * 2f; rootNode.Children.Add(axisNode); } { var cameraNode = CameraNode.Create(); cameraNode.Scale = new vec3(1, 1, 1) * 1f; rootNode.Children.Add(cameraNode); } { var perspectiveNode = PerspectiveNode.Create(); rootNode.Children.Add(perspectiveNode); } //{ // var cameraOutlineNode = CameraOutlineNode.Create(); // rootNode.Children.Add(cameraOutlineNode); //} //{ // var groundNode = GroundNode.Create(); // rootNode.Children.Add(groundNode); //} { var sliceNode = SliceNode.Create(); sliceNode.WorldPosition = new vec3(0, 0, -7); sliceNode.Scale = new vec3(1, 1, 1) * 7; rootNode.Children.Add(sliceNode); } { var cubeNode = CubeNode.Create(); cubeNode.WorldPosition = new vec3(0, 0, -7); cubeNode.RotationAngle = 35; cubeNode.RotationAxis = new vec3(1, 1, 1); rootNode.Children.Add(cubeNode); } { var groundNode = GroundNode.Create(); groundNode.Scale = new vec3(1, 1, 1) * 0.5f; groundNode.WorldPosition = new vec3(0, 0, -7); groundNode.RotationAngle = 90; groundNode.RotationAxis = new vec3(1, 0, 0); rootNode.Children.Add(groundNode); } return(rootNode); }
/// <summary> /// Render propeller in modern opengl. /// </summary> /// <returns></returns> public static SliceNode Create() { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, RectangleModel.strPosition); var builder = new RenderMethodBuilder(provider, map); var node = new SliceNode(new RectangleModel(), RectangleModel.strPosition, builder); node.Initialize(); return(node); }