안녕하세요 .앞 전에 공유 드렸던 라이브러리를
좀 더 개선해서 버전 0.1.5-preview를 출시했습니다.
깃허브 저장소는 다음과 같습니다.
Duxel은 Dear ImGui와 유사한 즉시 렌더링 모델을 GPT-5.2-Codex를 이용해 .NET 10용으로 구현했습니다. GUI를 구성하는 별도의 논리적 트리가 없으므로 구조가 단순하며, GPU를 활용해 화면을 빠르게 다시 렌더링하는 데 집중합니다.
최신 버전은 v0.1.5-preview로, 알파 단계에 있어 제품에 사용할 만큼 안정적이지는 않지만 대부분의 기능이 정상적으로 동작합니다.
주요 특징으로는 다음과 같습니다.
- 즉시 모드 UI — Dear ImGui 스타일의 Begin/End 패턴 기반 위젯 API
- Vulkan 렌더러 — MSAA 4x, VSync 토글, Triple Buffering, Persistent Mapped Buffers
- GLFW 윈도우/입력 — 키보드·마우스·스크롤·IME 입력 지원
- 스크롤바/팝업 — 통합 스크롤바 렌더러 (Child/Combo/ListBox/InputMultiline), 팝업 차단 레이어
- NativeAOT 지원 —
PublishAot=true배포 가능 (리플렉션/동적 로딩 없음) - UI DSL —
.ui파일로 선언적 UI 정의, 소스 생성기 기반 빌드 타임 코드 생성, 핫리로드 지원 - 폰트 아틀라스 — TTF 파싱(컴파운드 글리프 포함), HiDPI 스케일링, 빠른 시작을 위한 Built-in ASCII 폰트
- ImGui API 전체 커버리지 — 400+ API 구현 완료 (상세 목록)
핫리로드를 통해 화면 구성을 지원하기 위해 다음 형태의 DSL(Domain-Specific Language)를 지원하며 좀 더 자세한 지원은 UI DSL 레퍼런스를 참조할 수 있습니다. 아직 구조는 진화 중이며 안정적이지 않습니다.
Window "DSL Showcase"
MenuBar
Menu "File"
MenuItem Id="new" Text="New"
MenuItem Id="exit" Text="Exit"
SeparatorText "Inputs"
InputText Id="name" Text="Name" MaxLength=64
InputInt Id="age" Text="Age" Value=0
InputFloat Id="speed" Text="Speed" Format="0.00"
Checkbox Id="vsync" Text="VSync" Default=true
SliderFloat Id="volume" Text="Volume" Min=0 Max=1
Combo Id="preset" Text="Preset" Items="Low|Medium|High"
SeparatorText "Tabs"
TabBar "tabs"
TabItem "Tab A"
Text "Tab A content"
TabItem "Tab B"
Text "Tab B content"
SeparatorText "Table"
Table "table" 3
TableSetupColumn "Name"
TableSetupColumn "Value"
TableSetupColumn "Notes"
TableHeadersRow
TableNextRow
TableNextColumn
Text "Row1"
TableNextColumn
Text "42"
TableNextColumn
Text "Hello"
SeparatorText "Tree"
TreeNode "Node 1"
Text "Child 1"
TreeNode "Node 1.1"
Text "Leaf"
TreeNode "Node 2"
Text "Child 2"
DSL을 사용하게 되면 기본적으로 Debug/Release로 실행 시 DSL 파일을 수정할 때 즉시 화면이 갱신됩니다. NativeAOT로 게시하게 되면 소스생성기를 통해 소스코드로 변환하여 가장 빠른 코드로 재구성됩니다.
다음은 여러 기능을 확인할 수 있는 쇼케이스 입니다.
필수 환경
- .NET 10 SDK
- Vulkan 1.0+ 지원 (대부분의 GPU에서 지원)
종합 데모
curl -sLO https://raw.githubusercontent.com/dimohy/Duxel/main/samples/fba/all_features.cs && dotnet run all_features.cs
DSL 선언적 UI
curl -sLO https://raw.githubusercontent.com/dimohy/Duxel/main/samples/fba/dsl_showcase.cs && dotnet run dsl_showcase.cs
DSL 인터랙션
curl -sLO https://raw.githubusercontent.com/dimohy/Duxel/main/samples/fba/dsl_interaction.cs && dotnet run dsl_interaction.cs
기타 샘플 실행 방법은 Duxel FBA 샘플 — 바로 실행하기를 참고하세요.


