Example #1
0
        private void AddedNewGroup(int groupno, GLBuffer matrixbuffer)      // callback due to new group added, we need a texture and a RI
        {
            var texture = new GLTexture2DArray();

            items.Add(texture);
            texture.CreateOrUpdateTexture(bitmapsize.Width, bitmapsize.Height, matrixbuffers.Matricesperbuffer, textureformat, texmipmaplevels);
            grouptextureslist.Add(texture); // need to keep these for later addition

            var rd             = new RenderData(texture);
            var renderableItem = GLRenderableItem.CreateMatrix4(items, OpenTK.Graphics.OpenGL4.PrimitiveType.Quads, renderstate, matrixbuffer, 0, 4, rd, ic: 0);     //drawcount=4 (4 vertexes made up by shader), ic will be set in Add.

            renderlist.Add(shader, name + ":" + groupno, renderableItem);
            grouprenderlist.Add(renderableItem);
        }
        public DynamicGridCoordVertexShader(Font f = null)
        {
            texcoords = new GLTexture2DArray();
            texcoords.CreateOrUpdateTexture(200, 25, 9, OpenTK.Graphics.OpenGL4.SizedInternalFormat.Rgba8);        // size and number, and the texcoord will own them, so it will dispose of them

            gridfnt = f ?? new Font("MS Sans Serif", 16);

            for (int i = 0; i < 9; i++)
            {
                Bitmap bmp = new Bitmap(texcoords.Width, texcoords.Height); // a bitmap for each number
                texcoords.LoadBitmap(bmp, i, true, 1);
            }

            CompileLink(OpenTK.Graphics.OpenGL4.ShaderType.VertexShader, vcode());
        }