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

나는 QuickGUIMyGUI 모두 를 다루고있다 . 최근에 오우거 요구 사항을 모두 제거한 오우거 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.