2011-12-08 2 views
11

GLUT를 사용하고 싶지 않습니다. 왜냐하면 하스켈 같은 느낌이 없기 때문입니다. 콜백 때문에 기본적으로 IORef 등을 사용해야합니다.하스켈을위한 GLUT 대안?

저는 간단하게 보이며 모나드에서 게임 루프를 할 수있게 해주는 GLFW을 고려했습니다. 하지만 그것은 다른 하드웨어에 문제가있는 것처럼 보입니다. 예를 들어 내 노트북에서는 정상적으로 작동하지만 데스크톱에서는 정상적으로 작동합니다. 그리고 창문에서는 텍스처가 사라집니다.

SDL을 통해 들어갈 생각 이었지만 Windows 의존성에 문제가있을 수 있습니다. 어느 DLL이 필요한지 잘 모릅니다.

OpenGL 창이 열리려면 무엇이 남았습니까?

+2

몇 주 전부터 sigfpe의 GLUT에 대한 즐거운 토론이있었습니다. http://blog.sigfpe.com/2011/10/quick-and-dirty-reinversion-of-control.html? IORefs가 없지만 당신이 찾고있는 '하스켈과 같은'종류가 아닐 수도 있습니다. – applicative

+0

SDL have 나에게 아무런 문제가되지 않는다. – Qchmqs

답변

14

GLUT는 그 명성을 손상시키지 않고 정당화 한 것으로 내가 찾은 최고의 것입니다.

그러나 unhaskellish 느낌은 사용하지 않는 좋은 이유가 아닙니다. 당신은 당신이 여기서 프로젝트를 위해 사용하고자하는 추상화 수준 아래에 있습니다. 같은 방식으로 OpenGL을 사용하지 말아야합니다. OpenGL은 명령형 아이디어와 깊이 얽혀 있기 때문입니다.

그러나 GLUT와 OpenGL은 입니다. 핵심은이를 사용하기 전에이를 더 멋진 추상화로 마무리하는 것입니다. OpenGL에서 2D 그래픽 용 래퍼를 hackage에 게시했습니다 (graphics-drawingcombinators). 저기에 다른 시도가 있습니다, 나는 믿습니다. 그리고 나는 잠시 동안 그래픽 게임을 빠져 나와 더 이상 예술에 정통하지 않습니다.

GLUT를 감싸는 것이 약간 어렵습니다. IORefIO보다 덜 기능적이며 IO (및 기타 필수 구성 요소)을 피하면서 상호 작용을 표현하려면 FRP의 형식이 필요합니다. 결국이 FRP 라이브러리는 결국 아래에 명령형 아이디어를 포장하게 될 것입니다. C 용으로 작성된 라이브러리를 다루는 경우에는이를 피하지 못할 것입니다. 그리고 어쨌든 아래에 사는 것은 중요하지 않습니다. 모든 소프트웨어에는 전압의 전기 시스템이 있습니다.

어쨌든, 내가 연구하고있는 몇 년 전, GLUT는 실제로 크로스 플랫폼에서 작동하는 유일한 라이브러리였습니다. 나는 ... 모두의 인터페이스를 선호하지만 각각은 특정 제어 조건에서만 작동합니다. 그것은 큰 제약이었습니다. 만약 당신이 그것을 공유하지 않는다면 당신은 다른 것을 시도 할 수도 있습니다. 하지만 윈도우 인터페이스는 매우 쉽게 랩핑 (wrap)되는 얇은 레이어이므로이 선택에 대한 중요한 결정을 기반으로하지 않아도됩니다.

1

데스크톱/랩톱에서 정확히 작동하지 않는 기능이 있다면 더 좋을 것입니다. GLFW 용 C 소스 코드는 하스켈 바인딩과 함께 사용할 수 있습니다. 거의 기본 플랫폼 전용 API 만 사용합니다.