2014-03-25 5 views
0

나는 DrawPath(pen, path)TranslateTransform(dx, dy, order), ScaleTransform(sx, sy, order)이 (내 자신의 포트를 만들거나 적어도 다른 OpenGL을 라이브러리) 주위 UnityEngine.GL 포장 System.Drawing.Graphics 방법처럼보고 싶어요. 그러한 래퍼/라이브러리가 있습니까?System.Drawing.Graphics 비슷하게 intereface 제공 할 UnityEngine.GL 네임 스페이스 주위에 모든 오픈 소스 래퍼 있습니까?

+0

어떤 언어를 사용하고 있습니까? C#이 아닌가요? –

+0

@ j-p : 예 C#, .NET 3.5입니다. 또한 [wrapper-filipkunc/GLGraphics] (https://github.com/filipkunc/GLGraphics)를 발견했습니다. 아직 그것은 CLI와 순수한 OpenGL을위한 것입니다. Unity3d.GL = ( – DuckQueen

+0

)이 lib (glgraphics)는 코드를 검사 할 때 아주 쓸모있는 것이 아닙니다. (빠른 글리프 렌더링을 사용하는) 라인 조인트가 없습니다. OpenGL 벡터 렌더링의 큰 문제입니다. 저는 카이로를 사용합니다. 래퍼는 Mono입니다 .Cairo, Mono System.Drawing 구현은 카이로 내부를 사용하지만, 상태 메커니즘은 매우 사용하기 쉽습니다. egl 표면에서 가속되며, 현재 연구 중입니다. (이미 완료되지 않은 경우) gpu에 그리기 호출을 처리하는 방법 (나는 r600 ati 칩셋을 사용하여 깨끗한 egl 컨텍스트를 갖기 위해 노력하고 있습니다. –

답변

0

텍스쳐를 단결시켜 사용하고 싶다고 가정한다면, 을 사용하여 가장 간단한 예제 인 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에서 모든 작업을 유지하려고하는 것입니다.