업데이트 : 답변 하단 참조
이 답변은 너무 늦었지만 다른 사람들에게 빛을 비추고 싶습니다 (특히 C ++ 표준위원회가 카이로를 표준으로 통합하려고합니다).
아무도 "가속 벡터 그래픽"에 관심이없는 이유는 GPU의 작동 방식 때문입니다. GPU는 대규모 병렬화 및 SIMD 기능을 사용하여 각 픽셀의 색상을 지정합니다. AMD는 일반적으로 64x64 8x8 픽셀 블록에서 작동 하지만 NVIDIA 카드는 일반적으로 32x32 4x4 픽셀 에서 작동 합니다 (아래 업데이트 참조)
3D 삼각형을 렌더링하는 경우에도 GPU는이 삼각형이 포함하는 전체 쿼드에서 작동합니다. 따라서 삼각형이 블록의 모든 8x8 픽셀 (또는 엔비디아의 경우 4x4)을 모두 덮지 않으면 GPU는 커버되지 않은 픽셀의 색상을 계산 한 다음 결과를 버립니다. 즉, 커버되지 않은 픽셀에 대한 처리 능력이 낭비된다. 이것은 낭비 적 인 것처럼 보이지만 엄청난 수의 GPU 코어와 쌍을 이루면 큰 3D 삼각형 을 렌더링하는 데 엄청나게 좋습니다 (자세한 내용 은 기본 래스터 라이저 최적화 ).
따라서 벡터 기반 래스터 화를 다시 살펴보면 선을 두껍게해도 큰 빈 공간이 있음을 알 수 있습니다. 처리 능력의 많은 낭비하고, 그래서, (주요 전력 소모의 원인, 종종 병목) 더 중요한 대역폭 당신은 팔의 두께 여러과의 수평 또는 수직 라인을 그리는 것,하지 않는 한 그리고 그것은 완벽에 정렬 8 픽셀 경계, 많은 처리 능력과 대역폭이 낭비됩니다.
"폐기물"의 양은 렌더링 할 선체를 계산하여 줄일 수 있지만 (NV_path_rendering처럼) GPU는 여전히 8x8 / 4x4 블록으로 제한됩니다 (또한 NVIDIA의 GPU 벤치 마크는 더 높은 해상도, 픽셀 _ 커버 / 픽셀 _ 폐기 비율로 더 잘 확장됩니다) 훨씬 낮습니다).
이것이 많은 사람들이 "벡터 hw 가속"에 신경 쓰지 않는 이유입니다. GPU는 단순히 작업에 적합하지 않습니다.
NV_path_rendering은 표준보다 예외이며 스텐실 버퍼를 사용하는 새로운 트릭을 소개했습니다. 압축을 지원하고 대역폭 사용량을 크게 줄일 수 있습니다.
그럼에도 불구하고, 나는 NV_path_rendering에 회의적이며, 일부 인터넷 검색 결과 OpenGL을 사용할 때 Qt가 권장되는 방식이 NVIDIA의 NV_path_rendering보다 훨씬 빠르다는 것을 보여줍니다. NV 경로 렌더링
달리 말하면 NVIDIA의 슬라이드는 XRender의 수량 죄송합니다.
Qt 개발자들은 "hw 가속을 사용한 모든 벡터 드로잉이 빠르다"고 주장하는 대신 HW 가속 벡터 드로잉이 항상 더 나은 것은 아니라는 점을 더 정직하게 인정합니다 ( Qt 그래픽 및 성능 – OpenGL 참조 ).
그리고 우리는 "라이브 편집"벡터 그래픽의 일부를 건드리지 않았습니다. 즉각 삼각형 스트립 생성이 필요합니다. 복잡한 svgs를 편집 할 때 실제로 심각한 오버 헤드가 추가 될 수 있습니다.
더 나은지 아닌지는 응용 프로그램에 따라 크게 다릅니다. 원래 질문 "이륙하지 않은 이유"에 관해서는, 지금 답변을 드리겠습니다 : 많은 단점과 제약이있어서 종종 많은 사람들이 회의적이고 회의적이지 않고 편견을 갖도록 편향시킬 수 있습니다. .
업데이트 : 언급 된 GPU가 64x64 및 32x32 블록에서 래스터 화되지 않고 8x8 = 64 및 4x4 = 16으로 래스터 화되므로 숫자가 완전히 기본이 아닌 것으로 나타났습니다. 이는 게시물의 결론을 거의 무효화합니다. 나중에이 게시물을 최신 정보로 업데이트하겠습니다.