Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="glAction"></param>
        /// <param name="glNode"></param>
        public override void BeforeChildren(GLAction glAction, GLNode glNode)
        {
            var action = glAction as RenderAction;
            var node   = glNode as GLZeroIndexNode;

            Debug.Assert(action != null);
            Debug.Assert(node != null);

            action.Context.indexBuffer = node.GetIndexBuffer();
        }
Exemple #2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="glAction"></param>
        /// <param name="glNode"></param>
        public override void BeforeChildren(GLAction glAction, GLNode glNode)
        {
            var action = glAction as RenderAction;
            var node   = glNode as GLProgramNode;

            Debug.Assert(action != null);
            Debug.Assert(node != null);

            action.Context.shaderProgram = node.GetShaderProgram();
        }
Exemple #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="glAction"></param>
        /// <param name="glNode"></param>
        public override void DoAction(GLAction glAction, GLNode glNode)
        {
            var action = glAction as RenderAction;
            var node   = glNode as GLVertexNode;

            Debug.Assert(action != null);
            Debug.Assert(node != null);

            VertexBuffer vertexAttributeBuffer = node.GetVertexAttributeBuffer();

            action.Context.vertexAttributeBuffers.Add(vertexAttributeBuffer);
        }
Exemple #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="glAction"></param>
        /// <param name="glNode"></param>
        public override void BeforeChildren(GLAction glAction, GLNode glNode)
        {
            var action = glAction as RenderAction;
            var node   = glNode as GLStateNode;

            Debug.Assert(action != null);
            Debug.Assert(node != null);

            GLState state = node.GetState();

            action.Context.glStateList.Add(state);
        }
Exemple #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="glAction"></param>
        /// <param name="glNode"></param>
        public override void DoAction(GLAction glAction, GLNode glNode)
        {
            var action = glAction as RenderAction;
            var node   = glNode as GLTriangleStripNode;

            Debug.Assert(action != null);
            Debug.Assert(node != null);

            if (action.Context.vertexArrayObject == null)
            {
                VertexArrayObject vao = node.GetVertexArrayObject(action.Context.indexBuffer, action.Context.vertexAttributeBuffers.ToArray());
                action.Context.vertexArrayObject = vao;
            }

            action.Context.Render();
        }
        public static GLSnippet CreateInstance(GLAction someAction, GLNode glSomeNode)
        {
            Type actionType = someAction.ThisTypeCache;
            Type nodeType   = glSomeNode.ThisTypeCache;

            GLSnippet result = null;
            // NOTE: This forces GLSnippet's class name's pattern.
            string prefix  = actionType.Name.Substring(0, actionType.Name.Length - "Action".Length);
            string postfix = nodeType.Name.Substring("GL".Length, nodeType.Name.Length - "GL".Length - "Node".Length);

            try
            {
                Type type = Type.GetType(prefix + "_" + postfix);
                result = Activator.CreateInstance(type) as GLSnippet;
            }
            catch (Exception)
            {
            }

            return(result);
        }
Exemple #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="glAction"></param>
        /// <param name="glNode"></param>
        public override void BeforeChildren(GLAction glAction, GLNode glNode)
        {
            var action = glAction as RenderAction;
            var node   = glNode as GLPositionColorNode;

            Debug.Assert(action != null);
            Debug.Assert(node != null);

            if (action.Context.vertexArrayObject == null)
            {
                VertexArrayObject vao = node.GetVertexArrayObject(action.Context.indexBuffer, action.Context.vertexAttributeBuffers.ToArray());
                action.Context.vertexArrayObject = vao;
            }

            if (action.Context.shaderProgram == null)
            {
                action.Context.shaderProgram = node.GetProgram();
            }

            action.Context.Render();
        }
Exemple #8
0
 /// <summary>
 ///  a group of related OpenGL codes to specified <paramref name="glAction"/> and <paramref name="glNode"/>.
 /// </summary>
 /// <param name="glAction"></param>
 /// <param name="glNode"></param>
 public abstract void DoAction(GLAction glAction, GLNode glNode);
Exemple #9
0
 /// <summary>
 ///  a group of related OpenGL codes to specified <paramref name="glAction"/> and <paramref name="glNode"/>.
 /// </summary>
 /// <param name="glAction"></param>
 /// <param name="glNode"></param>
 public virtual void AfterChildren(GLAction glAction, GLNode glNode)
 {
 }
Exemple #10
0
 /// <summary>
 ///  a group of related OpenGL codes to specified <paramref name="glAction"/> and <paramref name="glNode"/>.
 /// </summary>
 /// <param name="glAction"></param>
 /// <param name="glNode"></param>
 public virtual void BeforeChildren(GLAction glAction, GLNode glNode)
 {
 }