You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Zero-Copy 프레임버퍼 바인딩 및 렌더링 (TpScreen.cpp, TpApp_p.h)
ThorVG 캔버스를 창 관리자(TpWM)의 디스플레이 메모리에 직접 바인딩하여 복사 과정(Blit) 없이 즉시 렌더링합니다.
// 1. 디스플레이 메모리 직접 바인딩 (TpScreen.cpp)
screenData->swCanvas->target(
(uint32_t *)screenData->wmSurface->matrix(),
surfaceWidth, surfaceWidth, surfaceHeight,
tvg::ColorSpace::ARGB8888
);
// 2. 렌더링 파이프라인 구동 (TpApp_p.h)
topCanvas->update(); // 변경된 더티 영역 계산
topCanvas->draw(); // 프레임버퍼에 래스터라이제이션 수행
topCanvas->sync(); // 비동기 렌더링 스레드 완료 대기
이미지 렌더링 및 둥근 모서리 마스킹 (TpPainter.cpp)
이미지 객체 오염을 방지하기 위해 duplicate()로 복사한 뒤, ThorVG의 Alpha Mask를 적용해 둥근 모서리를 표현합니다.
// TpPainter.cpp (drawImage)
tvg::Picture *pictureCopy = static_cast<tvg::Picture *>(imageData->tvgPicture->duplicate());
pictureCopy->translate(point.x(), point.y());
if (roundRad != 0) {
auto clipper = tvg::Shape::gen();
clipper->appendRect(x, y, w, h, roundRad, roundRad);
clipper->fill(255, 255, 255, 255);
// Alpha 마스크를 통해 둥근 모서리 영역만 출력
pictureCopy->mask(clipper, tvg::MaskMethod::Alpha);
}
painterData->tvgScene->push(std::move(pictureCopy));
사례가 더 많으나 일단 제가 핵심적이라고 생각한 부분만 가져왔습니다.
아키텍쳐 다이어그램
정리를 위한 아키텍쳐 다이어 그램입니다
text와 mermaid가 깨져서 그림으로 대체하는점 양해 부탁드립니다
마치며
TinyPiXOS 프로젝트에서 ThorVG는 그냥 외부 라이브러리가 아닌 TpGUI Framework 자체가 ThorVG의 Scene graph와 redering API를 추상화하도록 설계된 TpGUI 렌더링 백엔드 그 자체 입니다. (콜백 없음)
TinyPiXOS의 목표인 x86, ARM, RISC-V 등 다양한 환경을 지원하는 크로스 컴파일 환경과 소프트웨어 래스터라이저 중심의 경량 구조를 지원하며 Lottie/SVG 등 최신 벡터 그래픽을 지원하는건 사실상 ThorVG가 유일합니다.
때문에 TinyPiXOS는 데스크톱 UI 환경을 저사양 임베디드 기기위에 구동 시키기 위해 X11 / Wayland를 버리고 ThorVG를 선택한것으로 보입니다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ThorVG 활용사례 선정과 그 이유 (TinyPiXOS)
TinyPiXOS의 ThorVG 활용사례
Deep dive of ThorVG in TinyPiXOS
위젯 트리와 씬 그래프 1:1 매핑 (
TpWidget.cpp)모든 위젯은
tvg::Scene을 소유하며, 위젯의 부모-자식 관계가 ThorVG의 씬 그래프 계층 구조로 그대로 전달됩니다.Zero-Copy 프레임버퍼 바인딩 및 렌더링 (
TpScreen.cpp,TpApp_p.h)ThorVG 캔버스를 창 관리자(
TpWM)의 디스플레이 메모리에 직접 바인딩하여 복사 과정(Blit) 없이 즉시 렌더링합니다.이미지 렌더링 및 둥근 모서리 마스킹 (
TpPainter.cpp)이미지 객체 오염을 방지하기 위해
duplicate()로 복사한 뒤, ThorVG의 Alpha Mask를 적용해 둥근 모서리를 표현합니다.아키텍쳐 다이어그램
text와 mermaid가 깨져서 그림으로 대체하는점 양해 부탁드립니다
마치며
All reactions