protected override void OnLoad(EventArgs e) { base.OnLoad(e); gl3dcontroller = new Controller3D(); gl3dcontroller.PaintObjects = ControllerDraw; gl3dcontroller.ZoomDistance = 20F; gl3dcontroller.MatrixCalc.PerspectiveNearZDistance = 0.1f; gl3dcontroller.Start(glwfc, new Vector3(0, 0, 0), new Vector3(180f, 0, 0f), 1F); gl3dcontroller.KeyboardTravelSpeed = (ms, eyedist) => { return((float)ms / 50.0f); }; glwfc.MouseDown += mousedown; items.Add(new GLMatrixCalcUniformBlock(), "MCUB"); // def binding of 0 if (true) { GLRenderState lines = GLRenderState.Lines(1); items.Add(new GLColorShaderWorld(), "COSW"); rObjects.Add(items.Shader("COSW"), GLRenderableItem.CreateVector4Color4(items, PrimitiveType.Lines, lines, GLShapeObjectFactory.CreateLines(new Vector3(-100, 0, -100), new Vector3(-100, 0, 100), new Vector3(10, 0, 0), 21), new Color4[] { Color.Red, Color.Red, Color.Green, Color.Green }) ); rObjects.Add(items.Shader("COSW"), GLRenderableItem.CreateVector4Color4(items, PrimitiveType.Lines, lines, GLShapeObjectFactory.CreateLines(new Vector3(-100, 0, -100), new Vector3(100, 0, -100), new Vector3(0, 0, 10), 21), new Color4[] { Color.Red, Color.Red, Color.Green, Color.Green })); } var vert = new GLPLVertexShaderModelCoordWorldAutoscale(); var frag = new GLPLFragmentShaderFixedColor(Color.Yellow); var shader = new GLShaderPipeline(vert, frag); items.Add(shader, "TRI"); var triangles = new Vector4[] { new Vector4(0, 0, 0, 1), new Vector4(10, 0, 0, 1), new Vector4(10, 0, 10, 1), new Vector4(-20, 0, 0, 1), new Vector4(-10, 0, 0, 1), new Vector4(-10, 0, 10, 1) }; var worldpos = new Vector4[] { new Vector4(0, 0, 0, 0), new Vector4(0, 0, 12, 0) }; GLRenderState rc = GLRenderState.Tri(); rObjects.Add(items.Shader("TRI"), "scopen", GLRenderableItem.CreateVector4Vector4Buf2(items, PrimitiveType.Triangles, rc, triangles, worldpos, ic: 2, seconddivisor: 1)); // demo shared find block, a problem in the past with the previous interface GLStorageBlock findblock = new GLStorageBlock(11); findshader1 = items.NewShaderPipeline("FS", new GLPLVertexShaderModelCoordWorldAutoscale(), null, null, new GLPLGeoShaderFindTriangles(findblock, 16), null, null, null); findrender1 = GLRenderableItem.CreateVector4Vector4Buf2(items, PrimitiveType.Triangles, GLRenderState.Tri(), triangles, worldpos, ic: 2, seconddivisor: 1); findshader2 = items.NewShaderPipeline("FS2", new GLPLVertexShaderModelCoordWorldAutoscale(), null, null, new GLPLGeoShaderFindTriangles(findblock, 16), null, null, null); findrender2 = GLRenderableItem.CreateVector4Vector4Buf2(items, PrimitiveType.Triangles, GLRenderState.Tri(), triangles, worldpos, ic: 2, seconddivisor: 1); Closed += ShaderTest_Closed; }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); gl3dcontroller = new Controller3D(); gl3dcontroller.PaintObjects = ControllerDraw; gl3dcontroller.ZoomDistance = 20F; gl3dcontroller.MatrixCalc.PerspectiveNearZDistance = 0.1f; gl3dcontroller.Start(glwfc, new Vector3(0, 0, 0), new Vector3(180f, 0, 0f), 1F); gl3dcontroller.KeyboardTravelSpeed = (ms, eyedist) => { return((float)ms / 50.0f); }; items.Add(new GLMatrixCalcUniformBlock(), "MCUB"); // def binding of 0 if (true) { GLRenderState lines = GLRenderState.Lines(1); items.Add(new GLColorShaderWorld(), "COSW"); rObjects.Add(items.Shader("COSW"), GLRenderableItem.CreateVector4Color4(items, PrimitiveType.Lines, lines, GLShapeObjectFactory.CreateLines(new Vector3(-100, 0, -100), new Vector3(-100, 0, 100), new Vector3(10, 0, 0), 21), new Color4[] { Color.Red, Color.Red, Color.Green, Color.Green }) ); rObjects.Add(items.Shader("COSW"), GLRenderableItem.CreateVector4Color4(items, PrimitiveType.Lines, lines, GLShapeObjectFactory.CreateLines(new Vector3(-100, 0, -100), new Vector3(100, 0, -100), new Vector3(0, 0, 10), 21), new Color4[] { Color.Red, Color.Red, Color.Green, Color.Green })); } var vert = new GLPLVertexShaderModelCoordWithWorldTranslationCommonModelTranslation2(); var frag = new GLPLFragmentShaderVSColor(); var shader = new GLShaderPipeline(vert, frag); items.Add(shader, "TRI"); var vecp4 = new Vector4[] { new Vector4(0, 0, 0, 1), new Vector4(10, 0, 0, 1), new Vector4(10, 0, 10, 1), new Vector4(-20, 0, 0, 1), new Vector4(-10, 0, 0, 1), new Vector4(-10, 0, 10, 1) }; var wpp4 = new Vector4[] { new Vector4(0, 0, 0, 0), new Vector4(0, 0, 12, 0) }; GLRenderState rc = GLRenderState.Tri(); rObjects.Add(items.Shader("TRI"), "scopen", GLRenderableItem.CreateVector4Vector4Buf2(items, PrimitiveType.Triangles, rc, vecp4, wpp4, ic: 2, seconddivisor: 1)); var uniformbuf = new GLUniformBlock(20); uniformbuf.AllocateBytes(1024); uniformbuf.StartWrite(0); uniformbuf.Write(0); uniformbuf.Write(new float[2] { 0.5f, 0.9f }); // demo vec4 alignment and stride uniformbuf.StopReadWrite(); var storagebuf = new GLStorageBlock(21, true); storagebuf.AllocateBytes(1024); storagebuf.StartWrite(0); storagebuf.Write(0); storagebuf.Write(new float[2] { 0.2f, 0.9f }); storagebuf.StopReadWrite(); Closed += ShaderTest_Closed; }