/// <summary> /// Render propeller in modern opengl. /// </summary> /// <returns></returns> public static PropellerRenderer Create() { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", Propeller.strPosition); map.Add("inColor", Propeller.strColor); var model = new Propeller(); var builder = new RenderMethodBuilder(provider, map); var node = new PropellerRenderer(model, builder); node.Initialize(); return(node); }
/// <summary> /// Render propeller in modern opengl. /// </summary> /// <returns></returns> public static TexturedCubeNode Create(Texture texture) { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, TexturedCubeModel.strPosition); map.Add(inUV, TexturedCubeModel.strUV); var builder = new RenderMethodBuilder(provider, map); var node = new TexturedCubeNode(new TexturedCubeModel(), TexturedCubeModel.strPosition, builder); node.texture = texture; node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <param name="bitmap">bitmap to be displayed.</param> /// <param name="autoDispose">auto dispose <paramref name="bitmap"/> after this object's initialization.</param> public CtrlImageRenderer(Bitmap bitmap, bool autoDispose = false) { var model = new CtrlImageModel(); var vs = new VertexShader(vert, inPosition, inUV); var fs = new FragmentShader(frag); var codes = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, CtrlImageModel.position); map.Add(inUV, CtrlImageModel.uv); var methodBuilder = new RenderMethodBuilder(codes, map, new BlendState(BlendingSourceFactor.SourceAlpha, BlendingDestinationFactor.OneMinusSourceAlpha)); this.RenderUnit = new ModernRenderUnit(model, methodBuilder); this.bitmap = bitmap; this.autoDispose = autoDispose; }
/// <summary> /// Render propeller in modern opengl. /// </summary> /// <returns></returns> public static GroundNode Create() { RenderMethodBuilder renderBuilder; { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, GroundModel.strPosition); renderBuilder = new RenderMethodBuilder(provider, map); } var node = new GroundNode(new GroundModel(), GroundModel.strPosition, renderBuilder); node.Initialize(); return(node); }
public static KleinBottleNode Create(KleinBottleModel model) { var vs = new VertexShader(vertexShaderCode); var fs = new FragmentShader(fragmentShaderCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("in_Position", KleinBottleModel.strPosition); map.Add("in_TexCoord", KleinBottleModel.strTexCoord); var builder = new RenderMethodBuilder(provider, map, new LineWidthState(3)); var node = new KleinBottleNode(model, KleinBottleModel.strPosition, builder); node.ModelSize = model.Size; node.Initialize(); return(node); }
/// <summary> /// Render flabellum in modern opengl. /// </summary> /// <returns></returns> public static FlabellumNode Create() { var vs = new VertexShader(vertexCode, "inPositoin", "inColor"); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add("inPosition", Flabellum.strPosition); map.Add("inColor", Flabellum.strColor); var model = new Flabellum(); var builder = new RenderMethodBuilder(provider, map); var node = new FlabellumNode(model, builder); node.Initialize(); return(node); }
/// <summary> /// /// </summary> /// <param name="textureSource">source of texture.</param> public CtrlTexture(ITextureSource textureSource) : base(GUIAnchorStyles.Left | GUIAnchorStyles.Top) { var model = new CtrlTextureModel(); var vs = new VertexShader(vert); var fs = new FragmentShader(frag); var codes = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, CtrlTextureModel.position); map.Add(inUV, CtrlTextureModel.uv); var methodBuilder = new RenderMethodBuilder(codes, map, new BlendFuncSwitch(BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha)); this.RenderUnit = new ModernRenderUnit(model, methodBuilder); this.textureSource = textureSource; this.Initialize(); }
/// <summary> /// Creates a billboard in 3D world. Its size is described by Width\Height(in pixels). /// </summary> /// <param name="width"></param> /// <param name="height"></param> /// <param name="capacity">Maximum characters count.</param> /// <param name="glyphServer"></param> /// <returns></returns> public static TextBillboardNode Create(int width, int height, int capacity, GlyphServer glyphServer = null) { var vs = new VertexShader(vertexCode);// this vertex shader has no vertex attributes. var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, GlyphsModel.position); map.Add(inSTR, GlyphsModel.STR); var blendState = new BlendFuncSwitch(BlendSrcFactor.SrcAlpha, BlendDestFactor.OneMinusSrcAlpha); var builder = new RenderMethodBuilder(provider, map, blendState); var node = new TextBillboardNode(width, height, new GlyphsModel(capacity), builder, glyphServer); node.Initialize(); node.blend = blendState; return(node); }
/// <summary> /// Creates a <see cref="LightPositionNode"/> which displays and updates light's position. /// </summary> /// <param name="light"></param> /// <param name="initAngle"></param> /// <returns></returns> public static LightPositionNode Create(CSharpGL.LightBase light, float initAngle = 0) { var model = new Sphere(0.3f, 2, 3); var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, Sphere.strPosition); var builder = new RenderMethodBuilder(provider, map, new PolygonModeSwitch(PolygonMode.Line)); var node = new LightPositionNode(model, Sphere.strPosition, builder); node.Initialize(); node.light = light; node.RotationAngle = initAngle; return(node); }
/// <summary> /// A rectangle control that displays an image. /// </summary> public CtrlButton() : base(GUIAnchorStyles.Left | GUIAnchorStyles.Top) { var model = new CtrlButtonModel(); var vs = new VertexShader(vert); var fs = new FragmentShader(frag); var codes = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, CtrlButtonModel.position); map.Add(inColor, CtrlButtonModel.color); var methodBuilder = new RenderMethodBuilder(codes, map, new PolygonModeState(PolygonMode.Fill), new LineWidthState(2)); this.RenderUnit = new ModernRenderUnit(model, methodBuilder); this.Initialize(); this.MouseDown += CtrlButton_MouseDown; this.MouseUp += CtrlButton_MouseUp; }
/// <summary> /// /// </summary> /// <param name="model"></param> /// <returns></returns> public static ObjVNFNode Create(ObjVNFMesh mesh) { var model = new ObjVNF(mesh); RenderMethodBuilder builder; { var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var provider = new ShaderArray(vs, fs); var map = new AttributeMap(); map.Add(inPosition, Teapot.strPosition); map.Add(inNormal, Teapot.strNormal); builder = new RenderMethodBuilder(provider, map); } var node = new ObjVNFNode(model, ObjVNF.strPosition, builder); node.ModelSize = model.GetSize(); node.WorldPosition = model.GetPosition(); node.Initialize(); return node; }
public static AxisNode Create() { // vertex buffer and index buffer. var model = new AxisModel(); // vertex shader and fragment shader. var vs = new VertexShader(vertexCode); var fs = new FragmentShader(fragmentCode); var array = new ShaderArray(vs, fs); // which vertex buffer maps to which attribute in shader. var map = new AttributeMap(); map.Add("inPosition", AxisModel.strPosition); map.Add("inColor", AxisModel.strColor); // build a render method. var builder = new RenderMethodBuilder(array, map, new LineWidthSwitch(3)); // create node. var node = new AxisNode(model, builder); // initialize node. node.Initialize(); return(node); }