簡體   English   中英

有沒有一種簡單的方法可以在Mac OS X中使用C ++打開一個(或多個)opengl窗口?

[英]Is there a simple way for opening one (or many) opengl window in mac OS X with C++?

是的,我討厭Objective-c,而且我的項目是可移植的,所以我想用C ++編寫盡可能多的代碼,理想的是100%。
所以我有一個使用Xcode制作的常規C ++項目,並且想要打開一些OpenGL窗口。

編輯:該死的,Glut用glutMainLoop()接管應用程序的控件,我想對循環有更多的控制權。
嘗試freeglut,雖然我找不到OSX二進制文件,但我總是試圖編譯其他人的代碼。

更新:
我再次嘗試鏈接到SDL 1.3,這次我可以讓它工作! 俞灝!
我一直想使用SDL,但是必須使用多個窗口,這是版本1.3的一個功能,正在開發中,我永遠無法讓它工作。
由於它可以移植到數以萬計的操作系統,並且處理2D圖形以及OpenGL,我將繼續使用它。 謝謝大家!

如果您不想使用objective-c,則必須使用已棄用的碳庫X11或其他庫(如GLUT)來創建窗口。 如果可移植性是一個問題,要么去GLUT路線,要么你需要為你想要支持的每個平台編寫自己的窗口管理代碼。

如果你不去GLUT路線,你需要在每個操作系統之前編寫窗口管理代碼,所以我強烈建議你咬緊牙關並用objective-c ++編寫窗口管理。 你真正需要知道的唯一事情是指針總是一個指針,無論它處於哪種語言,所以只需將objective-c id存儲為void *並將它們轉換回id,它實際上很容易實現。

我猜NeHe教程可以提供幫助;

GLUT可以很好地滿足你的目的,雖然你可能希望有一個很好的C ++包裝器。 我最終破解了自己,雖然GLUT對包裝不友好,但它是可行的。

編輯:由於你有glutMainLoop()的問題,你可能會嘗試做更多的GLUT設計 - 它主要用於黑客,一次性項目和opengl演示。 並且freeglut不會在mac上編譯OOB,至少這是我的經驗。

對於便攜式,功能更全面的應用程序,Qt可能是您的最佳選擇。 否則,設計C ++以實現可移植性,並在每個平台上使用瘦GUI層。 如果在每個平台上運行某些東西是最重要的,請選擇前者。 如果每個平台上最佳用戶體驗最重要,請選擇后者。 您可能會發現“瘦”並不是所涉及內容的最具描述性的術語。

我發現這個演示對於使一個簡單的Cocoa / OpenGL窗口工作非常有用,即使代碼中有許多荒謬的錯誤: http//developer.apple.com/library/mac/#samplecode/CocoaGL/Introduction/Intro html的

這個問題已在3年前提出過,但仍然很新鮮。 我最近剛剛進行了類似的計划學校課程練習,並試圖找出在Mac / Windows / Linux /移動設備上使用OpenGL項目的最佳便攜式庫。 也許我的筆記會幫助某人做出決定。 我只提到了我考慮過的主要選項。

更高級別的API ,用於窗口管理以及其他好東西,如精靈,字體,聲音,事件處理等:

  • SFMLgithub repo :漂亮而整潔,C ++,面向對象的庫,本身與OpenGL集成。 在MacOS,Win和Linux上開箱即用的管理Windows和OpenGL 3.3上下文的可移植性。 2.2分支(github)中提供的移動支持。
  • SDL2 :支持所有主要平台,包括移動平台。 OpenGL上下文需要在某種程度上手動管理,因此使用GLEW非常方便(見下文)。 比SFML略低一點。

較低級別的API ,主要用於窗口和OpenGL上下文管理:

  • GLWF :這幾乎是現代OpenGL的GLUT替代品。 相當低級別,但可移植:Win,OSX,Lin。 積極發展。
  • GLEW :我只提到它的完整性。 它不管理窗口,但有助於管理OpenGL上下文,您可以將它與GLWF或SDL一起使用。

其他:

  • Freeglut :GLUT的開源繼續。 適用於小型演示項目。 我自己沒有使用它,但看到了很好的文檔和演示代碼。 積極發展。
  • GLUT:舊的,停產了。 網絡上的遺留演示和代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM