본문으로 이동
주 메뉴
주 메뉴
사이드바로 이동
숨기기
둘러보기
대문
최근 바뀜
임의 문서로
미디어위키 도움말
특수 문서 목록
Conaonda Wiki
검색
검색
외관
로그인
개인 도구
로그인
OpenGL 경량 GUI 문서 원본 보기
문서
토론
한국어
읽기
원본 보기
역사 보기
도구
도구
사이드바로 이동
숨기기
작업
읽기
원본 보기
역사 보기
일반
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보
외관
사이드바로 이동
숨기기
←
OpenGL 경량 GUI
문서 편집 작업을 수행할 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 작업은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
'''OpenGL 경량 GUI'''는 렌더링 애플리케이션의 기존 그래픽 문맥 안에 버튼, 슬라이더, 텍스트 상자, 창과 레이아웃 같은 조작 요소를 비교적 작은 의존성과 코드로 추가하는 사용자 인터페이스 방식이다. [https://github.com/wjakob/nanogui NanoGUI]는 OpenGL 3.x 이상을 대상으로 하는 크로스 플랫폼 위젯 라이브러리이다. == 개요 == NanoGUI는 대규모 데스크톱 애플리케이션 프레임워크 전체를 제공하기보다, 시각화·렌더러·연구 데모에 필요한 위젯과 이벤트 처리를 OpenGL 화면에 결합하는 데 초점을 둔다. 자동 레이아웃, 여러 위젯, 상태를 가진 C++11 람다 콜백, Apple 기기의 Retina 렌더링을 지원한다고 README가 설명한다. pybind11로 기능 전반의 Python 바인딩도 제공한다. '''2026년 8월 16일 확인 기준''', 공식 README는 이 저장소가 '''maintenance-only mode'''라고 명시한다. 또한 Metal, GLES, WebAssembly 지원 등을 포함해 크게 현대화하고 리팩터링한 새 버전을 별도 저장소로 안내한다. 그러므로 기존 NanoGUI는 안정된 구형 OpenGL 코드나 기존 프로젝트를 유지하는 후보로 보고, 신규 프로젝트는 새 버전과 요구 플랫폼을 함께 비교해야 한다. == 핵심 구조/작동 방식 == 하위 계층은 역할별 라이브러리로 나뉜다. GLFW가 창, OpenGL 문맥과 입력 이벤트를 크로스 플랫폼으로 처리한다. GLAD는 OpenGL 3.x 이상의 함수 로딩을 맡고, Eigen은 벡터 같은 기본 수학 자료형에 쓰인다. NanoVG는 2차원 도형과 텍스트를 그린다. NanoGUI는 이 기반 위에 위젯 트리, 이벤트 전달, 레이아웃 계산, 상태 변경과 콜백을 추가해 하나의 GUI 툴킷으로 만든다. 화면은 <code>Screen</code>을 바탕으로 창과 자식 <code>Widget</code>을 계층적으로 붙이는 구조이다. 컨테이너에 <code>BoxLayout</code> 같은 레이아웃을 지정하면 방향, 정렬, 여백과 간격에 따라 자식의 위치가 계산된다. 버튼은 <code>setCallback</code>에 C++11 람다를 등록해 클릭 동작을 연결한다. 슬라이더의 값 변경 콜백에서 텍스트 상자의 값을 바꾸는 식으로 위젯 간 상태를 동기화할 수 있다. 기본 위젯을 직접 조합하는 방식 외에 <code>FormHelper</code>가 있다. 이 편의 계층은 창과 그룹을 만들고 bool, 정수, 실수, 문자열, 열거형, 색상 같은 C++ 변수에 편집 컨트롤을 연결한다. 디버그 파라미터, 재질 값, 카메라 설정처럼 실행 중에 조절할 변수가 많은 연구용 렌더러에서 짧은 코드로 제어판을 만들 수 있다. <code>performLayout</code>, 창 중앙 정렬, 화면 표시와 이벤트 루프는 렌더링 초기화 흐름에 맞춰 호출한다. 빌드는 CMake를 사용한다. README는 의존 서브모듈까지 받도록 <code>git clone --recursive</code>로 복제한 뒤 Makefile 또는 Visual Studio 프로젝트를 생성하는 절차를 제시한다. Linux에서는 X11과 Mesa 관련 개발 패키지가 필요하고 Python 바인딩에는 Python 개발 헤더가 추가로 필요하다. 공식 설명상 macOS의 Clang, Linux의 GCC 또는 Clang, Windows의 Visual Studio 2015 이상에서 동작하며 C++11 지원 컴파일러를 요구한다. 이 목록은 README의 지원 설명이지 최신 조합 전체의 검증표는 아니다. == 활용 == OpenGL 기반 과학 시각화에서 등치면 임곗값, 색상 범위, 카메라나 조명 값을 실시간 조절하는 패널을 붙일 수 있다. 경로 추적기와 3D 엔진 데모에서는 재질과 샘플 수를 바꾸고 렌더링 결과를 즉시 비교할 수 있다. 영상 처리 도구에서는 필터 파라미터와 중간 결과 표시를 한 창에 구성할 수 있다. Python 바인딩은 C++ 렌더링 코어를 유지하면서 실험 제어를 Python으로 작성할 때 유용하다. [[Qt 도킹 UI]]는 메뉴, 도킹 창, 문서 모델과 복잡한 데스크톱 기능이 필요한 경우의 대안이고, NanoGUI는 렌더링 화면에 작은 제어면을 얹는 경우에 더 가깝다. [[고충실도 3D 시뮬레이션]] 같은 엔진은 자체 편집기와 UI 계층을 가지므로 NanoGUI를 추가하기 전에 이벤트 루프와 렌더 패스가 충돌하지 않는지 검토해야 한다. [[웨이블릿 변환]] 데모에서는 신호, 분해 수준과 웨이블릿 선택을 조절하는 교육용 인터페이스로 활용할 수 있다. == 한계 및 주의점 == 유지보수 전용 상태는 새 기능과 플랫폼 대응이 기존 저장소에 적극적으로 추가되지 않을 수 있음을 뜻한다. 원본 README가 Metal, GLES, WebAssembly를 새 버전의 특징으로 별도 안내하므로 기존 버전에 해당 기능이 있다고 가정하면 안 된다. 모바일·웹·Apple의 비 OpenGL 그래픽 경로가 필수라면 새 버전 또는 다른 GUI 계층을 평가해야 한다. 서브모듈 의존성은 복제 누락과 버전 불일치의 원인이 될 수 있다. 프로젝트가 이미 GLFW, GLAD, Eigen, NanoVG의 다른 버전을 사용한다면 중복 심볼, 빌드 옵션, OpenGL 문맥 소유권을 정리해야 한다. HiDPI 배율, 글꼴, 한글 입력기, 접근성, 키보드 탐색, 클립보드 같은 제품 수준 기능은 목표 운영체제에서 직접 검증해야 한다. 경량이라는 설명이 모든 기능이나 바이너리 크기에 대한 보증은 아니다. NanoGUI 자체는 BSD 계열 라이선스를 사용하지만 아이콘용 Entypo+ 글꼴은 CC BY-SA 4.0이라고 README가 밝힌다. 상용 배포에서는 코드 라이선스뿐 아니라 글꼴의 저작자 표시와 배포 조건을 따로 검토해야 한다. GUI 콜백에서 무거운 계산을 직접 실행하면 이벤트와 렌더링이 멈출 수 있으므로 작업 스레드, 상태 전달과 OpenGL 문맥 접근을 명확히 분리한다. == 함께 보기 == * [[최근 GitHub Star 연구 주제]] * [[Qt 도킹 UI]] * [[고충실도 3D 시뮬레이션]] * [[웨이블릿 변환]] == 출처 == * [https://github.com/wjakob/nanogui wjakob/nanogui 공식 저장소] * [https://nanogui.readthedocs.io/ NanoGUI 공식 문서] * [https://github.com/mitsuba-renderer/nanogui NanoGUI 현대화 버전 공식 저장소] [[분류:GitHub Star 연구]] [[분류:OpenGL]] [[분류:GUI]] [[분류:C++]]
OpenGL 경량 GUI
문서로 돌아갑니다.
검색
검색
OpenGL 경량 GUI 문서 원본 보기
새 주제