Пример #1
0
        private unsafe void AddTestNode(Scene scene)
        {
            Shader shader  = new Shader(GameWindow.SHADER_PATH + "Vert2DColorUVShader.glsl", GameWindow.SHADER_PATH + "pointTexFragShader.glsl");
            var    texture = new Texture("Arrow.png");
            var    node    = new Node {
                Position = new Vector3(0, 0, -3)
            };

            node.Model = Matrix4.CreateTranslation(node.Position);

            VTest2 quad = new VTest2();

            quad.PX1 = -0.5f; quad.PY1 = -0.5f; quad.U1 = 0f; quad.V1 = 1f; quad.r1 = 0xff; quad.g1 = 0xff; quad.b1 = 0xff; quad.a1 = 0xff;
            quad.PX2 = 0.5f; quad.PY2 = -0.5f; quad.U2 = 1f; quad.V2 = 1f; quad.r2 = 0x00; quad.g2 = 0x00; quad.b2 = 0xff; quad.a2 = 0xff;
            quad.PX3 = -0.5f; quad.PY3 = 0.5f; quad.U3 = 0f; quad.V3 = 0f; quad.r3 = 0x00; quad.g3 = 0xff; quad.b3 = 0x00; quad.a3 = 0xff;
            quad.PX4 = 0.5f; quad.PY4 = 0.5f; quad.U4 = 1f; quad.V4 = 0f; quad.r4 = 0xff; quad.g4 = 0x00; quad.b4 = 0x00; quad.a4 = 0xff;
            Vertex2DColorUV vertex       = new Vertex2DColorUV();
            var             buffer       = Serialize(quad);
            var             vertexBuffer = new VertexBuffer <Vertex2DColorUV>(buffer, sizeof(VTest2), vertex.GetVertexFormat());

            uint[] indices = new uint[6] {
                0, 1, 2, 2, 1, 3
            };
            var indexBuffer = new IndexBuffer(indices);
            var renderer    = new Renderer(vertexBuffer, indexBuffer, shader);

            renderer.AddTexture(texture);
            renderer.BlendingFlag = true;
            renderer.CullFaceFlag = false;
            node.Add(renderer);
            scene.Add(node);
        }
Пример #2
0
        private static unsafe byte *Serialize(VTest2 data)
        {
            int len = Marshal.SizeOf(data);

            byte[] arr = new byte[len];

            IntPtr ptr = Marshal.AllocHGlobal(len);

            Marshal.StructureToPtr(data, ptr, true);

            Marshal.Copy(ptr, arr, 0, len);

            Marshal.FreeHGlobal(ptr);
            fixed(byte *d = &arr[0])
            {
                return(d);
            }
        }