2012-03-27 4 views
10

OpenGL을 사용하여 그래픽 프로젝트를 작성한 후 Web로 변환 할 수 있도록 WebGL로 변환하려고합니다. 직접 OpenGL C++ 코드를 WebGL로 변환 할 수있는 방법이 있습니까? 아니면 수동으로 다시 써야합니까 ?? 저는 WebGL을 코딩 할 때만 필요하기 때문에 병렬로 자바 스크립트를 배우면서 WebGL의 기본 사항을 배웠습니다. 그리고 다른 제안도 환영합니다.OpenGL 코드를 WebGL로 변환하는 방법

답변

13

나는 언급 한 사람이 아무도 없다. Emscripten. 완벽한 솔루션이 아니며 코드 구조 및 사용하는 라이브러리에 따라 일부 수동 조정이 필요할 수 있지만 일반적인 C++에서 Javascript 로의 크로스 컴파일러로 잘 작동합니다.

나는 그것이 마법의 탄환이라고 약속하지 않지만, 한 번해볼만한 가치가있을 것입니다.

+0

고맙습니다. :) Emscripten과 함께 일하려고합니다. 무슨 일이 일어나는 지 봅시다. glut 라이브러리를 사용하고 있습니다. – Bond

+2

이것이 어떻게 효과가 있었는지에 대한 업데이트가 있습니까? 나는 엄격하게 OpenGL 인 수업을 듣고 있지만 웹 기반 버전으로 내 최종 프로젝트를 변환하고 싶습니다 ... –

+0

데스크탑 GL에 [기존의 deprecated 고정 함수 API]가 추가되었습니다. (http : // stackoverflow .com/a/35802910/128511)을 사용하는 경우 에뮬레이션을해야합니다. – gman

0

일반적으로 수동 재 작성이 필요합니다. 제네릭 솔루션이 기존 코드를 올바르게 해석 할 가능성은별로 없습니다. 물론 자신의 코드와 구조만을 다룰 수 있기 때문에 자신 만의 변환기를 작성할 수 있습니다.

WebGL이 OpenGL ES 2.0의 하위 집합이기 때문에 데스크톱 시스템 용으로 작성된 코드가 반드시 호환되는 것은 아닙니다.

가장 가까이에 본 것은 OBJ 모델을 WebGL 코드로 변환하는 코드입니다.

1

응용 프로그램이 간단하지 않으면 문제의 대부분이 C++ 코드를 JavaScript로 변환 할 것입니다. C++과 JavaScript는 매우 다른 언어입니다 (예 : 하나는 정적으로 입력되고 다른 하나는 동적으로 입력됩니다.

WebGL은 대략 OpenGL 2.0의 하위 집합 인 OpenGL ES 2.0을 기반으로합니다. 따라서 직접 번역 할 수있는 OpenGL 코드를 작성할 수는 있지만 모든 OpenGL 코드가 그런 것은 아닙니다. 더 많은 정보 없이는 OpenGL 코드의 이식이 얼마나 쉬운 지 알기가 어렵습니다.

나는 당신을 위해 일을 자동화 할 수있는 도구를 전혀 모르고 있으며, 나는 그것을 본다면 그런 도구에 회의적이다. 하나의 프로그래밍 언어 또는 API의 의미를 다른 것으로 프로그래밍하는 것은 자동화하기가 매우 어렵습니다.

+0

쿠스 마 및 @SpliFF 답장을 보내 주셔서 감사합니다. 사실 저는 건물을 걸어서 둘러 보았습니다. 이제는 인터넷을 통해 그것을 홍보하고 싶습니다. 그래서 나는 webGL이 필요한 것입니다. – Bond

4

상업용 솔루션이지만 Mandreel을 사용합니다. WebGL에서 OpenGL ES 1.1 고정 기능 지원을 에뮬레이트합니다. Emscripten도 C/C++로 변환되며, 외관상으로는 old OpenGL support입니다. 당신은 기존의 OpenGL의 오래된 고정 기능 기능을 사용하면 그렇지 않으면

,

  1. 당신은 (등 많은 glVertex, glColor 함수를 ..) 물론
  2. 의 자바 스크립트로 C++를 변환해야 할거야 OpenGL 4와 OpenGL ES 2.0의 새로운 프로그래밍 스타일을 사용하도록 변환해야 할 것입니다.
+0

도움을 주셔서 대단히 감사드립니다. 나는 Mandreel에 대한 나의 예산을 봐야 할 것이다. 하지만 정말 좋습니다. – Bond

0

브라우저에서 비 자바 스크립트 코드를 실행할 때 기본이 될 수 있습니다.

Emscriptem (이미 언급했듯이)은 일부 C++ 컴파일러에서 출력 할 수있는 LLVM을 이해할 수 있지만 이러한 작업은 수동 작업이 필요할 수도 있습니다.

나는 이것들을 사용한 적은 한번도 읽지 않았으며 흥미롭고 달성하려는 목표에 도달하려고 노력하고 있습니다. 구현에 대해 말할 수는 없으며 그들이 "현실 세계"에서 어떻게 작동 하는지를 말할 수 없습니다. .

관련 문제