是的,我讨厌Objective-c,而且我的项目是可移植的,所以我想用C ++编写尽可能多的代码,理想的是100%。
所以我有一个使用Xcode制作的常规C ++项目,并且想要打开一些OpenGL窗口。
编辑:该死的,Glut用glutMainLoop()接管应用程序的控制权,我希望能更好地控制循环。
尝试freeglut,虽然我找不到OSX二进制文件,但我总是试图编译其他人的代码。
更新
我再次尝试链接到SDL 1.3,这次我可以让它工作!俞灏!
我一直想使用SDL,但是必须使用多个窗口,这是版本1.3的一个功能,正在开发中,我永远无法让它工作。
由于它可以移植到数以万计的操作系统,并且处理2D图形以及OpenGL,我将继续使用它。谢谢大家!
答案 0 :(得分:3)
如果您不想使用objective-c,则必须使用已弃用的碳库X11或其他库(如GLUT)来创建窗口。如果可移植性是一个问题,请选择GLUT路由,或者您需要为要支持的每个平台编写自己的窗口管理代码。
如果你没有进入GLUT路线,你需要在每个操作系统之前编写窗口管理代码,因此我强烈建议你咬紧牙关并用objective-c ++编写窗口管理。你真正需要知道的唯一事情就是指针总是一个指针,无论它处于哪种语言,所以只需将objective-c id存储为void *并将它们转换回id,它实际上非常容易。
答案 1 :(得分:2)
我猜NeHe tutorials可以提供帮助;
答案 2 :(得分:2)
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 :(得分:1)
这个问题已在3年前提出过,但仍然很新鲜。我最近刚刚进行了类似的计划学校课程练习,并试图找出在Mac / Windows / Linux /移动设备上使用OpenGL项目的最佳便携式库。也许我的笔记会帮助某人做出决定。我只提到了我考虑过的主要选项。
更高级别的API ,用于窗口管理以及其他好东西,如精灵,字体,声音,事件处理等:
低级API ,主要用于窗口和OpenGL上下文管理:
其他: