OpenGL을위한 좋은 GUI? [닫은]


65

저는 Superbible을 사용하여 FreeGLUT을 사용하여 OpenGL을 배우기 시작했으며 기본 그래픽에서 얻은 지식을 활용하여 기술을 연마했습니다.

이 경험에서 더 많은 것을 얻으려면 FreeGLUT이 사용하는 것을 덮어 쓰는 GUI를 통합하고 싶습니다. 이제 내 질문은 이것입니다. 이것이 가능하며 어떤 라이브러리를 사용해야합니까?

라이브러리의 일부 특성 :

  • 오픈 소스
  • 다중 플랫폼 (Linux 및 Windows)
  • C / C ++

다른 권장 사항이 있으면 언제든지 내 문제에 대한 답변과 함께 게시하십시오.


2
OpenGL은 언제부터 GUI를 기본적으로 사용합니까? : L
— 공산주의 오리

내가 사용하고있는 라이브러리, 즉 FreeGLUT이라고 말하고 싶습니다.
— Cristina

현상금 추가-추가 요구 사항 : 플랫폼 간 파일 io 대화 상자가 있어야합니다.
— Jari Komppa

1
sourceforge에서 작은 파일 대화 상자에는 여러 모달 함수 호출이 있습니다. 프로젝트에 추가 할 간단한 C C ++ 크로스 플랫폼 파일입니다.
— tinyfiledialogs

답변:


33

아직 직접 시도하지는 않았지만 이것은 매우 흥미로워 보입니다.

대영

편집 : 렌더링 할 컨텍스트가 필요하므로 SFML 또는 SDL 1.3을 권장합니다.


실제로 그것은 흥미로워 보인다
— Will

2
나는 libRocket을 사용하고 그것은 절대적으로 훌륭합니다! HTML의 고통도 라이브러리에 존재하지만 약간의 장난으로 거의 모든 것을 얻을 수 있습니다 : D
— Grimshaw

정지 된 것 같습니다 (2 년 동안 업데이트되지 않음). 또한 문서를 탐색해도 실제로 어떤 것이 좋은지 알 수 없습니다. 문서는 일반적으로 너무 낮은 수준입니다.
— Jari Komppa

Fedora 또는 Ubuntu에 대한 공식 패키지는 없습니다 (내가 아는 한).
— ilent2

GLFW를 사용해 렌더링 컨텍스트를 만들 수도 있습니다

19

CEGUI (Crazy Eddie 's GUI) 는 널리 사용되며 기존 렌더러 백엔드 중 하나를 사용하거나 원하는 OpenGL 지원 API를 대상으로 고유 한 대상을 작성할 수 있습니다. 오픈 소스, 멀티 플랫폼 및 C ++입니다. 그러나 일관성을 중요하게 생각합니다. 이는 게임의 UI 원칙으로 항상 좋은 것은 아니며 정확히 한 곳에 수십 개의 사용자 지정 컨트롤이 사용될 수 있습니다.

최근 인기있는 패턴은 "GUI 라이브러리 없음"의 IMGUI (즉시 모드 GUI) 입니다. 장점과 단점이 있습니다-매우 간단하지만 최적화하기가 까다로울 수 있지만 콤보 상자 또는 트리보기와 같은 고급 컨트롤을위한 훌륭한 IMGUI 모델을 아직 보지 못했습니다. 나는 IMGUI 윈도우 시스템의 좋은 구현을 보지 못했고 (나는 결코 행복하지 않은 것을 작성하려고 노력하는 데 시간을 소비한다)-간단한 HUD 요소에는 우수하고 일회성 컨트롤은 간단합니다.


2
나는 최근에 IMGUI에 대한 첫 경험을 가지고 있었고 그것이 큰 후진 단계라고 느꼈습니다. 당신이 말했듯이, 간단한 HUD 또는 정적 툴바에는 좋지만 아티스트 나 디자이너가 레이아웃을 만들고, 프리젠 테이션과 논리 코드를 한 곳에 모으도록 강요하는 역동적이고 역동적 인 모든 것에는 꽤 끔찍합니다.
— Kylotan

11
-1. 나는 CEGUI가 존재하고 사람들이 그것을 기본 고토라고 언급하기 때문에 대중적이라는 느낌을 얻습니다. 내가 그것을 사용할 때, 나는 그것이 어색하고 매우 어수선하다는 것을 알았습니다.
— bobobobo

@bobobobo 동의합니다. 존재하기 때문에 인기가 있습니다. 그것은 오우거를위한 "공식적인"GUI (그것이 무엇이든간에)이지만 코딩하기에는 꽤 번거 롭습니다. 또한 RAD GUI 빌더는 버그가 있습니다 (아직 개발 중).
— cheshirekow

1
친애하는 imgui 는 다목적 IMGUI가 가능한 방법에 대한 좋은 예인 것 같습니다. 아직 시도하지는 않았지만 상당히 유망한 것 같습니다.
— legends2k

13

나는 최근 그웬을 우연히 발견했다 . Gary 's Mod의 저자가 작성한 GUI 라이브러리입니다. 좋은 게임 라이브러리로 라이센스가 부여 된 MIT입니다.
그웬 로고
도서관에는 몇 가지 일이 있습니다.

  • 대형 위젯 세트
    Gwen은 몇 년 동안 개발되어 왔으며 보여줍니다.
  • 손쉬운 백엔드 렌더러 커스터마이징
    이것은 큰 것입니다. 라이브러리에는 OpenGL 렌더러가 재 빌드되어 제공됩니다. 그러나 렌더러를 만드는 것은 게임의 렌더 시스템에 특정한 렌더러를 만들고 싶을 정도로 간단합니다.
  • 덜 채우는
    그웬은 게임 GUI의 가벼운 측면에있는 것 같습니다. XML, HTML 렌더러, 단순한 C ++은 없습니다. 그웬은 이미지 로더와 함께 제공되지 않습니다. 렌더러 백엔드가로드를 처리 할 것으로 예상합니다. 라이브러리를 작게 유지하고 게임의 렌더 시스템이 이미 텍스처를 관리하므로이 기능이 마음에 듭니다.
  • Skinable
    이정표의 첫 번째 것은 아니지만 결국 게임에 맞게 GUI를 사용자 정의해야합니다.
  • C ++ 스키닝
    저는 웹 개발자가 아니며 html CSS 중심 GUI를 찾기가 어렵습니다.
  • 입력 주입
    게임에 큰 영향을줍니다. 입력 폴링을 소유하려는 GUI 시스템을 사용하는 것은 항상 고통스러운 일입니다.
  • 크로스 플랫폼
    라이브러리는 크로스 플랫폼이되기 위해 노력하지만 덜 사용되는 플랫폼에서는 문제가있을 수 있음을 인정합니다.
  • 적극적으로 개발
    또한 CEGUI 나 MyGUI보다 훨씬 작으므로 해킹하거나 패치를 제출하는 것이 훨씬 실용적입니다.

그러나 여기에 대한 단점이 있습니다.

  • 단일 페이지의 문서가 없습니다. 더 이상 웹 사이트뿐만 아니라 github repo 만 있습니다.
  • 패키지화 된 렌더러에는 이식성이 없으므로 필요할 경우 직접 작성해야합니다.
  • ???

2
휴대용 (아직), opengl 백엔드 미완료 등의 문서가 부족합니다. 파일 io 대화 상자 (또는 그 문제에 대한 대화 상자)가 있는지 온라인 자료에서 확인할 수 없었습니다.
— Jari Komppa

문서가 부족하다는 데 동의합니다. 핵심 라이브러리는 크로스 플랫폼입니다. 그러나 다른 플랫폼에서는 렌더러 및 입력 시스템이 부족합니다. 저에게는 렌더 시스템에 맞는 렌더러를 빌드 할 때 문제가되지 않습니다.
— deft_code

1
xaml / html / css가없는 것은 확실한 장점이 아닙니다. 이것이 이런 것들을 위해 만들어졌으며 C ++보다 훨씬 잘합니다.
— user441521

7

답장을 늦게 미안하지만 GG 라는 OpenGL UI 프레임 워크를 살펴볼 수 있습니다 . GG는 FreeOrion 프로젝트의 일부로 개발되었으며 SVN 저장소 (및 다운로드 가능한 SDK)에 포함되어 있습니다. 꽤 유능한 것 같습니다. 아래 스크린 샷을 포함 시켰습니다. 이미지를 클릭하면 정식 버전을 볼 수 있습니다.

FreeOrion의 GG 기반 UI 스크린 샷


GG가 sourceforge의 별도 프로젝트 gigi로 이동 한 것처럼 보입니다.
— deft_code

나를 놀라게하지 않을 것입니다. 그들은 의도적으로 FreeOrion과 분리되어있었습니다.
— Mike Strobel

방금 저녁 시간을 보냈는데 실제로 CMake 파일이 필요합니다. 나는 모양과 느낌을 좋아하고 부스트를 사용하는 것을 좋아하지 않습니다.
— knight666

GG는 여기에서 찾을 수 있습니다 : gigi.sourceforge.net
— MichaelHouse

창 아래에 빌드하는 것이 행운입니다.
— 3Dave


4

Cinder 가 사용하고 있는 AntTweakBar를 살펴보십시오 . Cinder 용으로 개발 된 새로운 GUI 라이브러리도 있습니다 : SimpleGUI .

당신은 HTML + CSS를 가고 싶은 경우가 Awesomium (에서 사용하는 자신의 과대 성장 게임에서 Wolfire 게임 ) 및라는 무료 대안 버클륨은 .


AntTweakBar는 훌륭하지만 다소 제한적입니다. 가치 조정과 매우 간단한 통합을 위해 설계된 것에는 훌륭하지만 일반적인 UI 툴킷으로는 유용하지 않습니다.
— Jari Komppa

3

나는 QuickGUI 와 MyGUI 모두 를 다루고있다 . 최근에 오우거 요구 사항을 모두 제거한 오우거 GUI 라이브러리입니다. 아직 경험이 많지 않지만 QuickGUI는 훨씬 작고 간단하기 때문에 QuickGUI를 고수 할 것 같습니다.

QuickGUI 위키가 최신 오우거 프리 버전을 가리 키도록 업데이트되었는지 확실하지 않습니다. 최신 릴리스는 다음과 같습니다.

http://www.stormsonggames.com/downloads/QuickGUI_10_8.zip

repo는 몇 가지 크로스 플랫폼 업데이트를 보았으므로 svn을 직접 사용하는 것이 좋습니다.

http://stormsonggames.com/svn/SSE/Gaia2/QuickGUI
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgreDemo
http://stormsonggames.com/svn/SSE/Gaia2/QuickGUIOgrePlatform

사용자 이름 : 익명
비밀번호 : QuickGUI

마지막으로 다른 렌더링 백엔드를 추가하는 방법에 대한 간단한 위키가 있습니다. http://www.ogre3d.org/tikiwiki/QuickGUI+Integration+Tutorial

MyGUI는 부풀어 오르는 비용으로 더 많은 기능을 가지고있는 것 같습니다. 솔직히 단순성이 요구되지 않는다면 CEGUI는 MyGUI를 물 밖으로 날려 버립니다.


MyGUI를 사용해 보았고 실제로 부풀어 오릅니다. 공간을 절약하려면 실제로 권장하지 마십시오. 여전히 QuickGUI를 작동시키기 위해 노력하고 있습니다.
— Cristina

1
나는 두 가지를 모두 시도했지만 CEGUI를 가장 오랫동안 사용했지만 많은 텍스트로 매우 느리게 언급하지 않는 것은 절대적으로 끔찍했습니다. 최근에 MyGUI로 전환했으며 잘 작동했습니다. 그들의 레이아웃과 스킨 에디터는 매우 깔끔합니다. 나는 팽창에 대해 확신하지 못한다. 나는 CEGUI가 비교할 때 크게 팽창했다고 생각한다. MyGUI의 일부 관행은 이상합니다 (예를 들어 + = 대리자를 할당하는 연산자, 캐스팅도 이상한 방식으로 수행됩니다-저자는 적극적으로 개발하고 제안을 듣고 있습니다). CEGUI.
— Samaursa

@Samaursa + = operator는 둘 이상의 대리인을 추가 할 수 있음을 의미합니다.
— Ocelot

3

QT는 크로스 플랫폼이므로 C ++을 권장하며 LGPL 라이센스로 오픈 소스 버전을 얻을 수 있습니다. 또한 사용하기 쉽고 사용할 수있는 사전 제작 된 구성 요소가 많이 있습니다.


6
이것이 OpenGL 기반 UI라고 생각하지 마십시오.
— DeadMG

OpenGL 기반이어야한다고 말하지 않습니까, 아니면 질문을 완전히 오해하고 있습니까? QT가 할 수있는 것보다 더 많은 freeGLUT을 대신하고 싶지 않습니다.
— martiert

두 번째입니다! 나는 qt를 사용하며 시작할 때 필요한 거의 모든 것을 가지고 있습니다. 수년에 걸쳐 좋은 지원으로 매우 안정되었습니다. 그들은 또한 gluon이라는 게임을위한 프레임 워크를 가지고 있습니다.
— brainydexter

8
QT와 프레임 워크의 문제점은 일반적으로 메인 루프를 제어한다는 것입니다. 그것은 일반적으로 좋은 게임을 빌려주지 않습니다.
— deft_code

1
UI가 OpenGL이 아닌 경우 이벤트 기반 UI와 게임 + 그래픽 이벤트 및 타이머를 사용하여 메인 루프를 제거하는 것이 좋습니다. 어쨌든 QT를 사용했는데 권장하지 않습니다.
— Danny Varod

3

제작자는 그렇게 말해서 나를 쏠 수도 있지만 GLFW 는 크로스 플랫폼 GUI 프레임 워크를 만드는 데 뛰어납니다 . GLFW 개발 담당자는 GLFW에 대해 계속해서 GUI를 처리 하지 않습니다 . 그것은 않습니다 그러나 그래픽, 이벤트 및 마우스 / 키보드 / 조이스틱 작업을 처리하는, 좋은 간단한 깨끗하고 완전히 휴대용 일을하고 있어요.

나를 위해 GLFW에 대해 좋은 점은, 상당히 작은 더 시스템 특정 코드, 아니 GLUT을 필요로하지 않는다는 것이다 및 유지 관리가 잘되어있다. 지금까지 OpenGL 4.1 프로젝트에서 사용하기에 안정적입니다. SDL과 같은 것에 비해 나는 작은 오버 헤드를 좋아하며 GUI 처리기 클래스를 작성하는 파이처럼 쉽습니다.

또는 FLTK를 살펴보십시오 . 그것은 모든 종류의 것들에 사용될 수 있으며 매우 간단하게 용도 변경됩니다. 실제로 애플리케이션 구축에 사용되지만 3D 객체를 완벽하게 처리 할 수 ​​있으며 OpenGL을 기반으로합니다. 매우 작고 잘 지원되며 많은 사람들이 게임 디자인 수준에서 사용자 정의 인터페이스를 만드는 것을 보지 못했지만 일부는 훌륭하게 작동하는 것 같습니다.


1
glfw는 데스크탑 플랫폼에서 창 코드를 절대로 끄는 라이브러리가 아닌가? 그래픽을 어떻게 만들 수 있습니까?

1
@GabrieleVierti는 크로스 플랫폼 가속 입력도 처리한다고 말했습니다. 그 외에도 OpenGL 또는 Vulkan 컨텍스트의 핵심을 얻는 데 도움이되며 많은 상용구를 처리합니다. 컨텍스트를 사용하면 화면 위에 핫스팟의 히스토그램 피라미드를 구현하고이를 클릭 / 타입 이벤트 핸들러의 주요 부분으로 사용합니다. 그런 다음 컨트롤이 피라미드의 특정 위치에 연결됩니다. 실제 그래픽 설정을위한 일반 그리기 명령. 웹 컨텐츠를위한 UI 키트는 잘 작동하거나 도메인 고유의 기술로 작동합니다
— Garet Claborn

미리 제작 된 GUI 프레임 워크 (예 : Dear ImGui)를 추가하는 것이 훨씬 더 쉬울 것입니다.

1
ImGui는 즉시 모드에서 작동하므로 하드웨어 가속이 손실됩니다. 내가 언급 한 것은 게임 렌더링을 위해 어쨌든 추적해야했기 때문에 2D 오버레이를 추가하는 것은 크게 고려되지 않았습니다. 즉, 비록 일부 프로젝트에 대한 번거 로움이 얼마나 내가 볼 수 있습니다
— Garet Claborn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.