我想使用CGL或NSOpenGL创建OpenGL窗口而不使用XCode(使用命令行gcc编译)。我正在开发跨平台的东西,如果可以的话,我想将代码分歧降到最低!我的代码库目前完全是C ++。这是可能吗?我是OSX的新手,我没有触及目标C.我浏览了开发人员文档并抓住了一些示例文件。他们都使用xcode。我成功编译了源代码并使用正确的框架进行了链接,但整个应用程序包,xib和info.plist似乎有点过头了。
答案 0 :(得分:5)
这是可以得到的:
// g++ glInfo.cpp -o glInfo.x -framework OpenGL
#include <OpenGL/OpenGL.h>
#include <OpenGL/gl3.h>
#include <stdio.h>
int main(int argc, char **argv)
{
CGLContextObj ctx;
CGLPixelFormatObj pix;
GLint npix;
CGLPixelFormatAttribute attribs[] = {
(CGLPixelFormatAttribute) 0
};
CGLChoosePixelFormat( attribs, &pix, &npix );
CGLCreateContext( pix, NULL, &ctx );
CGLSetCurrentContext( ctx );
printf("Vendor: %s\n", glGetString(GL_VENDOR) );
printf("Renderer: %s\n", glGetString(GL_RENDERER) );
printf("Version: %s\n", glGetString(GL_VERSION) );
printf("GLSL: %s\n", glGetString(GL_SHADING_LANGUAGE_VERSION));
return 0;
}
答案 1 :(得分:2)
fltk和SDL都应该有足够的AGL / CGL代码。我使用fltk-1.3.0在OS X上构建并运行cmdline GL应用程序。它使用的是AGL子系统,不推荐使用。 SDL将CGL和NSOpenGL用于其Quartz视频层:./src/video/quartz
如果需要构建src.m
,请使用编译器的obj-c标志,并使用本机g ++,llvm-g ++,clang ++或其他任何内容来处理链接。您可能需要添加-framework CGL -framework OpenGL
以及ApplicationServices
和Cocoa
。很多答案取决于你的'代码差异'是什么意思。
答案 2 :(得分:0)
您可以在不使用Xcode的情况下构建应用程序,但如果您希望不是系统管理员的用户使用它们,您将需要一个应用程序包(因此.plist)和(除非它是游戏)超出用户界面OpenGL提供什么。您无需为UI创建.xib。您可以通过编程方式完成所有操作,但使用.xibs对于大多数事情来说要容易得多。您为什么不想使用旨在帮助您的工具?我不是说他们是最好的,但他们只使用命令行界面。 (一旦你的应用程序有一个Xcode项目,你可以从命令行构建它,甚至自动构建它。)
答案 3 :(得分:0)
嗯,你可以“手工”(我曾经在NeXTStep时间做过),但是它在第一次运作之前是一种痛苦。 XCode在引擎盖下使用makefile。您可以在
中找到并采用makefile /Developer/Makefiles
(前XCode 4.3) 或者用于
中的XCode 4.3 /Applications/Xcode.app/Contents/Developer/Makefiles
祝你好运!
答案 4 :(得分:0)
对于构建系统,我推荐CMake / CPack,它将帮助您保持跨平台并构建应用程序包。对于NSGL,可以使用Obj-C ++,但我手头没有任何代码。