/// <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(); }
/// <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(); }
/// <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); }
/// <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); }
/// <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); }
/// <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(); }
/// <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);
/// <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) { }
/// <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) { }