문제

OpenGL 앱 (QT를 사용하여 Debian의 C ++ 개발)에 표시하고 싶은 간단한 SVG 아트 워크 (아이콘 및 글리프 종류의 것들)가 있습니다.

명백한 해결책은 imagemagick libs를 사용하는 것입니다. 전환하다 SVG는 래스터 이미지와 텍스처를위한 적절한 다각형에 매핑됩니다 (또는 좋은 오래된 GldrawPixels를 사용하십시오).

그러나 SVG를 OpenGL 호출 시퀀스로 직접 번역하고 OpenGL의 라인, 다각형 등을 사용하여 렌더링 할 것이 있는지 궁금합니다. 누구든지 이것을 할 수있는 일을 아는 사람이 있습니까?

도움이 되었습니까?

해결책

QT는 이것을 할 수 있습니다.
QSVGRENDERER SVG를 가져 와서 a에 페인트 할 수 있습니다 QGLWidget
아마도 당신은 당신이 함께 바이올린을 가지고 있어야 할 것입니다 paintEvent() SVG 이외의 QGLWIDGET에 다른 것을 그려 보려면 abit하십시오.

다른 팁

SVGL 이것을 다루는 것으로 보이지만 몇 년 동안 휴면 상태였습니다. 여전히 당신은 거기에서 어떤 가치 코드를 찾을 수있을 것입니다.

보입니다 잉크 스케이프 유용한 흥미로운 수출 옵션이 있습니다. 여기에는 dxf, povray, eps, ps (postscript), xaml, latex 및 opendocument draw (ODG)가 포함됩니다. 아마도 그 중 하나에 대한 변환기가있을 수 있으며 잉크 스케이프를 중개자로 사용할 수 있습니다.

특히 DXF는 이미 일반적인 3D 형식이기 때문에 후보 일 가능성이 높습니다. Assimp DXF 로딩하기위한 좋은 후보입니다.

이 문제에 대한 모든 솔루션은 애니메이션 SVG (SMIL)를 지원하지 않지만 특히 사소한 SVG를 지원할 수 있기 때문에 일반적으로 벡터 그래픽을 표시하는 것에 대한 대답은 일반적으로 벡터 그래픽을 표시하는 것입니다. 애니메이션에 대해 아무 말도하지 않았기 때문에, 나는 정적 SVG만을 암시하는 질문이라고 가정합니다.

2011 년부터 최첨단 예술은 Mark Kilgard의 아기입니다. nv_path_rendering, 현재 이름에서 이미 추측했던 것처럼 현재 공급 업체 (NVIDIA) 확장자입니다. 그것에 대한 많은 자료가 있습니다.

물론 SVG 등을로드 할 수 있습니다 https://www.youtube.com/watch?v=BCROHG6PJQE. 또한 경로에 대한 PostScript 구문도 지원합니다. Demoed에서 경로 렌더링을 다른 OpenGL (3D) 물건과 혼합 할 수도 있습니다.

NV_PATH_RENDERING은 이제 가능한 경우 Google의 SKIA 라이브러리에서 사용됩니다. (NVIDIA는 2013 년 말과 2014 년 말에 코드를 기부했습니다.) Cairo Devs 중 하나 (인텔 직원이기도) http://lists.cairographics.org/archives/cairo/2013-march/024134.html, 카이로가 NV_Path_Rendering을 사용하려는 구체적인 노력을 아직 알고 있지는 않지만.

공급 업체 지원 또는 학문적 Glitz를 훨씬 적게 (또는 명백히 포함하지 않음) 나노그, 현재 개발되고 유지되고 있습니다. (https://github.com/memononen/nanovg) 시간이 지남에 따라오고 나간 OpenGL에 대한 2D 라이브러리의 수를 감안할 때, 당신은 주요 공급 업체가 지원하지 않는 것을 내 겸손한 견해로 사용하여 큰 내기를 받고 있습니다.

나는 벡터 드로잉 프로그램을 만들었습니다 옴버 이는 SVG 파일을 가져올 수있는 능력이 있으며 벡터 도면을 GLTF 2.0 형식의 "평평한"3D 모델로 내보낼 수 있습니다. GLTF 형식은 거의 RAW OpenGL 데이터이므로 최소한의 코드로 읽고 표시 할 수 있습니다. 나는 조금 썼다 pixi.js 플러그인 WebGL을 사용하여 벡터 아트를 포함하는 GLTF 파일을 표시합니다.

Blender는 또한 SVG 파일 가져 오기를 지원합니다. 그런 다음 결과를 3D 파일 형식으로 내보낼 수 있지만 SVG에 대한 블렌더 지원은 복잡한 도면보다는 간단한 곡선을 가져 오기위한 것입니다.

나는 이와 같은 일을 할 수있는 다른 도구가 있다고 확신합니다. 한 가지 문제는 SVG가 최신 그래픽 하드웨어를 사전하므로 많은 기능이 OpenGL, 특히 효율적인 방식으로 구현하기위한 진정한 고통이라는 것입니다. 그룹의 불투명도, 불규칙한 모양의 기울기, 래스터 기반 필터 작업 등과 같은 것들이 지저분해질 수 있으므로 SVG의 더 난해한 기능이 일반적으로 3D 형식으로 변환 할 수있는 프로그램에 의해 지원되는지 확실하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top