我通常在Windows上编程,但我从学校获得了一个macbook pro,所以我正在尝试为OSX制作一个OpenGL应用程序。我下载并安装了XCode,但我不知道如何获得一个简单的OpenGL应用程序。我不想使用Objective-C,但我绝对不想使用GLUT。有人能指出我正确的方向吗?
答案 0 :(得分:11)
OS X上的OpenGL与几乎所有其他内容之间的最大区别在于头文件的位置。在OS X上:
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#include <GLUT/glut.h>
如果你想远离Objective-C / Cocoa和GLUT,你可以尝试SDL这是一个跨平台的游戏库(窗口,2D图形,声音,输入等)。
编辑:忘记了mipadi发布的编译器标志,即:
-framework OpenGL
答案 1 :(得分:7)
这个问题在互联网时代已经非常陈旧,但最简单的方法就是在Objective-C中涉足......抱歉。
我接近这个的一般方法如下:
NSOpenGLView
对象,然后在窗口中将其打开。MyRenderer
或其他。MyRendere
r。NSOpenGLView
的方法。
- (void) awakeFromNib
:在这里进行类初始化。 请勿在此处初始化OpenGL,否则您的程序将崩溃。 - (void) drawRect:(NSRect)dirtRect
:在这里做你的绘画。- (void) prepareOpenGL
:在此处初始化OpenGL。- (void) reshape:(NSRect)bounds
:用于调整视图的大小。好消息是你可以在MyRenderer.mm中自由混合C ++函数和类。
您还可以使用C ++ #include
指令以及Objective-C #import
指令。你可以在drawRect
里面做C ++而没有任何问题。
坏消息是NSOpenGLView
每隔x毫秒不会重绘场景。只有在感觉有必要时才会重绘场景。你必须为此使用Cocoa的NSTimer
类。
修改:额外注意:在drawRect
方法中,请务必致电glFlush()
以及[[self openGLContext] flushBuffer]
。出于某种原因,只有调用[[self openGLContext] flushBuffer]
才能在视图上绘制任何内容。
答案 2 :(得分:2)
我一直在使用这个网站作为我对Window,Mac和Linux项目的参考。 http://ysflight.in.coocan.jp/programming/fssimplewindow/e.html
作者设法编写了一些很好的例子,可以帮助你在所有平台上使用你的项目。
最后一点是,您必须使用Objective-C创建窗口,并且可以使用C ++编写其余代码。
答案 3 :(得分:1)
在Mac OS X上使用OpenGL时,有两点需要注意:
一,你必须链接OpenGL框架。在Xcode之外,您可以将-framework
标志传递给链接器:
$ gcc -framework OpenGL -o my_opengl_program my_opengl_program.c
(请注意,此标志仅适用于OS X.)
如果您使用的是Xcode,则可以将OpenGL.framework
添加到链接的框架中。
二,前缀为OpenGL/
&gt;在OpenGL标头前面。例如,要包含gl.h
,请使用:
#include <OpenGL/gl.h>
否则,在Mac OS X上使用OpenGL进行编程几乎是一样的。
答案 4 :(得分:1)
由于您在Mac上进行编程,因此您可以使用您熟悉的任何语言。 XCode支持编译C ++,所以如果你熟悉Windows上的OpenGL,那么这是一个直接的过渡,尽管你需要使用正确的方法来创建一个OSX窗口(最有可能的可可)。
如果python是你的,那么PyOpenGL是一个跨平台的OpenGL的Python绑定。
答案 5 :(得分:0)
非Objective C库是AGL。