[英]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 ,用于窗口管理以及其他好东西,如精灵,字体,声音,事件处理等:
较低级别的API ,主要用于窗口和OpenGL上下文管理:
其他:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.