我想用CGL或NSOpenGL来创建一个不使用XCode的OpenGL窗口(用命令行gcc编译)。我正在开发一些跨平台的东西,如果我可以的话,我想把代码分歧保持在最低限度!我的代码库目前完全是C++。这有可能吗?我是OSX的新手,还没有接触过objective C。我浏览了开发人员文档,并抓取了一些示例文件。他们都在使用xcode。我成功地编译了源代码并链接到了正确的框架,但整个应用程序包、xib和info.plist似乎有点过头了。
发布于 2012-03-16 16:21:42
fltk和SDL都应该有足够的AGL/CGL代码。我已经在装有fltk-1.3.0的OS X上构建并运行了cmdline GL应用程序。但是,它使用AGL子系统,该子系统已被弃用。SDL使用CGL和NSOpenGL作为其Quartz视频层:./src/video/quartz
如果您需要构建一个src.m,并让本机g++、llvm-g++、clang++或其他任何工具来处理链接,请对编译器使用obj-c标志。您可能需要添加-framework CGL -framework OpenGL以及ApplicationServices和Cocoa。很多答案取决于你所说的“代码分歧”是什么意思。
发布于 2013-03-09 05:00:20
这是一个人能得到的最基本的信息:
// 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;
}发布于 2012-03-16 14:38:16
你可以在不使用Xcode的情况下构建应用程序,但是如果你想让非系统管理员的用户使用它们,你将需要一个应用程序包(以及.plist)和一个超出Xcode所提供的用户界面(除非它是一个游戏)。您不需要为您的UI创建.xib。您可以通过编程来完成这一切,尽管使用.xibs对大多数事情来说要容易得多。为什么你不想使用那些设计来帮助你的工具呢?我不是说它们是最好的,但它们只使用命令行界面就能击败它们。(不过,一旦您的应用程序有了Xcode项目,您就可以从命令行构建它,甚至可以自动构建它。)
https://stackoverflow.com/questions/9732778
复制相似问题