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); }
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); } }