private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(5, 3, 4) * 0.3f; 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); Texture texture0, texture1; GetTextures(out texture0, out texture1); texture0.TextureUnitIndex = 0; // glActiveTexture(GL_TEXTURE0 + 0); glBindTexture(GL_TEXTURE_2D, texture0.TextureId); texture1.TextureUnitIndex = 1; // glActiveTexture(GL_TEXTURE0 + 1); glBindTexture(GL_TEXTURE_2D, texture2.TextureId); this.cubeNode = CubeNode.Create(texture0, texture1); var scene = new Scene(camera); scene.RootNode = cubeNode; this.scene = scene; var list = new ActionList(); var transformAction = new TransformAction(scene.RootNode); list.Add(transformAction); var renderAction = new RenderAction(scene); list.Add(renderAction); this.actionList = list; //// uncomment these lines to enable manipualter of camera! //var manipulater = new FirstPerspectiveManipulater(); //manipulater.BindingMouseButtons = System.Windows.Forms.MouseButtons.Right; //manipulater.Bind(camera, this.winGLCanvas1); }
public static CubeNode Create(Texture texture0, Texture texture1) { // vertex buffer and index buffer. var model = new CubeModel(); RenderMethodBuilder singleColorBuilder, multiTextureBuilder; { // vertex shader and fragment shader. var vs = new VertexShader(singleColorVert); var fs = new FragmentShader(singleColorFrag); var array = new ShaderArray(vs, fs); // which vertex buffer maps to which attribute in shader. var map = new AttributeMap(); map.Add("inPosition", CubeModel.strPosition); // build a render method. var polygonModeSwitch = new PolygonModeSwitch(PolygonMode.Line); var lineWidth = new LineWidthSwitch(4); singleColorBuilder = new RenderMethodBuilder(array, map, polygonModeSwitch, lineWidth); } { // vertex shader and fragment shader. var vs = new VertexShader(multiTextureVert); var fs = new FragmentShader(multiTextureFrag); var array = new ShaderArray(vs, fs); // which vertex buffer maps to which attribute in shader. var map = new AttributeMap(); map.Add("inPosition", CubeModel.strPosition); map.Add("inTexCoord", CubeModel.strTexCoord); // build a render method. multiTextureBuilder = new RenderMethodBuilder(array, map); } // create node. var node = new CubeNode(model, singleColorBuilder, multiTextureBuilder); node.SetTextures(texture0, texture1); // initialize node. node.Initialize(); return(node); }