UnityEngine.GL命名空间周围是否有任何开源包装器可以提供System.Drawing.Graphics等相互作用?

时间:2014-03-25 14:07:33

标签: c# .net opengl unity3d system.drawing

我很想看到DrawPath(pen, path)TranslateTransform(dx, dy, order)ScaleTransform(sx, sy, order)System.Drawing.Graphics方法 UnityEngine.GL(或至少一些其他OpenGL库来创建我自己的端口)。有没有这样的包装/库?

1 个答案:

答案 0 :(得分:0)

假设您想在一个纹理上绘制以在单位中使用,这是使用cairo构建可直接用于使用opengl进行纹理化的位图的最简单示例。包装器是Mono.Cairo

using System;
using Cairo;

namespace cairoTests
{
    class Program
    {
        static void Main(string[] args)
        {            
            int height = 512;
            int width = 512;
            int stride = 4 * width; 

            int bmpSize = stride * height;
            byte[] bmp = new byte[bmpSize];

            using (ImageSurface surf =
                new ImageSurface(bmp, Format.Argb32, width, height, stride))
            {
                using (Context ctx = new Context(surf))
                {
                    ctx.SetSourceRGB(1, 0, 0);
                    ctx.Rectangle(10, 10, 100, 100);
                    ctx.Fill();
                }
                surf.Flush();
                //surf.WriteToPng(@"c:/test.png");
            }
            //now you have bmp filled, and may pass it to your game engine as texture             
        }
    }
}

下一步是创建一个egl上下文并尝试将所有工作保留在gpu上,并在绑定已存在的纹理时传递最终纹理。