2011-12-08 33 views
11

Tôi không muốn sử dụng GLUT, vì nó không có cảm giác giống như Haskell trên đó. Về cơ bản, nó buộc bạn phải sử dụng IORef và như vậy, vì các cuộc gọi lại.Giải pháp thay thế GLUT cho Haskell?

tôi đã xem xét GLFW, mà dường như đơn giản và cho phép tôi làm vòng lặp trò chơi trong một đơn nguyên. Nhưng có vẻ như có vấn đề với phần cứng khác nhau, ví dụ, nó hoạt động tốt trên máy tính xách tay của tôi nhưng không hoạt động trên máy tính để bàn của tôi. Và trên cửa sổ, các kết cấu biến mất.

Vì vậy, tôi đã nghĩ đến việc đi vào qua SDL, nhưng có thể có một vấn đề với cửa sổ phụ thuộc, tôi chỉ không biết mà DLL một nhu cầu.

Vì vậy, những gì còn lại để mở cửa sổ OpenGL?

+2

Bạn có thấy ngạc thảo luận tâm-uốn SIGFPE của thị trường bất động từ một vài tuần trước http://blog.sigfpe.com/2011/10/quick-and-dirty-reinversion-of-control.html? Không có IORef nhưng có lẽ nó không phải là loại 'giống như Haskell' mà bạn đang tìm kiếm. – applicative

+0

SDL không có vấn đề gì với tôi – Qchmqs

Trả lời

14

GLUT, danh tiếng kém của nó nguyên vẹn và hợp lý, là điều tốt nhất tôi đã tìm thấy.

Tuy nhiên, cảm giác unhaskellish không phải là một lý do chính đáng không sử dụng nó. Bạn đang ở mức dưới mức trừu tượng mà bạn sẽ muốn sử dụng cho một dự án ở đây. Trong cùng một cách, bạn không nên sử dụng OpenGL vì nó bị vướng víu sâu với các ý tưởng bắt buộc.

Nhưng GLUT và OpenGL là fine. Điều quan trọng là để quấn chúng vào các trừu tượng đẹp hơn trước khi sử dụng chúng. Tôi đã xuất bản để tấn công trình bao bọc của tôi cho đồ họa 2D trong OpenGL, graphics-drawingcombinators. Có những nỗ lực khác xung quanh, tôi tin rằng, và tôi đã được ra khỏi trò chơi đồ họa trong một thời gian vì vậy tôi không còn thạo trong nhà nước của nghệ thuật.

Bao bọc GLUT khó hơn một chút. IORef s có ít chức năng hơn IO chính nó, và để diễn tả tương tác trong khi thường tránh IO (và cấu trúc bắt buộc khác), bạn sẽ cần một số hình thức FRP. Cuối cùng các thư viện FRP sẽ kết thúc các ý tưởng bắt buộc bên dưới chúng - khi bạn đang đối phó với các thư viện được viết cho C bạn sẽ không thoát khỏi điều này. Và nó là khá không quan trọng những gì sống bên dưới anyway - tất cả các phần mềm có hệ thống điện của điện áp bên dưới.

Dù sao, một vài năm trước đây khi tôi đã nghiên cứu, thị trường bất động là thư viện duy nhất mà thực sự làm việc cross-platform. Tôi thích giao diện của ... tất cả các thiết bị khác, nhưng mỗi thiết bị chỉ hoạt động trong một số điều kiện được kiểm soát nhất định. Đó là một hạn chế lớn, nếu bạn không chia sẻ nó, bạn có thể thử một cái gì đó khác. Nhưng giao diện cửa sổ là một lớp mỏng được bọc khá dễ dàng, bạn không cần phải đưa ra bất kỳ quyết định chính nào về lựa chọn này.

1

Sẽ tốt hơn nếu bạn nói chính xác những gì không hoạt động trên máy tính để bàn/máy tính xách tay. Mã nguồn C cho GLFW có sẵn với ràng buộc Haskell. Nó khá nhiều chỉ sử dụng một số API nền tảng cơ bản cụ thể và đó là nó.

Các vấn đề liên quan