Exemple #1
0
        /// <summary>
        /// Render a teapot in modern opengl.
        /// </summary>
        /// <returns></returns>
        public static MultiTargetTeapotNode Create(bool adjacent = false)
        {
            IBufferSource model; vec3 size;

            if (adjacent)
            {
                var m = new AdjacentTeapot(); size = m.GetModelSize(); model = m;
            }
            else
            {
                var m = new Teapot(); size = m.GetModelSize(); model = m;
            }
            string position = adjacent ? AdjacentTeapot.strPosition : Teapot.strPosition;
            string color    = adjacent ? AdjacentTeapot.strColor : Teapot.strColor;

            var vs       = new VertexShader(vertexCode);
            var fs       = new FragmentShader(fragmentCode);
            var provider = new ShaderArray(vs, fs);
            var map      = new AttributeMap();

            map.Add(inPosition, position);
            map.Add(inColor, color);
            var builder = new RenderMethodBuilder(provider, map);
            var node    = new MultiTargetTeapotNode(model, position, builder);

            node.Initialize();
            node.ModelSize = size;

            return(node);
        }
Exemple #2
0
        private void FormMain_Load(object sender, EventArgs e)
        {
            var teapot = MultiTargetTeapotNode.Create();

            this.teapot = teapot;

            var framebufferProvider = new MultiTargetFramebufferProvider();

            this.framebufferProvider = framebufferProvider;
            var rtt = new RenderToTextureNode(width, height, new Camera(new vec3(0, 0, 5), new vec3(0, 0, 0), new vec3(0, 1, 0), CameraType.Perspecitive, width, height), framebufferProvider);

            rtt.Children.Add(teapot);// rendered to framebuffer, then to texture.
            //this.rtt = rtt;

            var rectangle = RectangleNode.Create();

            //var rectangle = new LegacyRectangleRenderer();//LegacyRectangleRenderer dosen't work in rendering-to-texture.
            rectangle.TextureSource = rtt;
            rectangle.Scale         = new vec3(7, 7, 7);
            this.rectangle          = rectangle;

            var group = new GroupNode();

            group.Children.Add(rtt);
            group.Children.Add(rectangle);

            var position = new vec3(5, 1, 4);
            var center   = new vec3(0, 0, 0);
            var up       = new vec3(0, 1, 0);
            var camera   = new Camera(position, center, up, CameraType.Perspecitive, this.winGLCanvas1.Width, this.winGLCanvas1.Height);

            this.scene = new Scene(camera)

            {
                ClearColor = Color.SkyBlue.ToVec4(),
                RootNode   = group,
            };

            var list            = new ActionList();
            var transformAction = new TransformAction(scene);

            list.Add(transformAction);
            var renderAction = new RenderAction(scene);

            list.Add(renderAction);
            this.actionList = list;
        }