如何使用 c++ 和 opengl 在 mac 中创建窗口?

Posted

技术标签:

【中文标题】如何使用 c++ 和 opengl 在 mac 中创建窗口?【英文标题】:How do I create a window in mac using c++ and opengl? 【发布时间】:2012-10-28 01:20:48 【问题描述】:

我是 mac 开发的新手。我目前已经开始使用windows(使用direct3d)开发一个3d程序,我希望使用opengl扩展到mac。我目前有关于如何初始化窗口并使用 opengl 和 windows 在其中绘制的代码。我正在寻找用 mac 界面替换此应用程序的 windows 部分的最无缝方式。

bool SystemClass::InitializeWindows(OpenGLClass* OpenGL, int& screenWidth, int&screenHeight)
WNDCLASSEX wc;
DEVMODE dmScreenSettings;
int posX, posY;

ApplicationHandle = this;
m_hinstance = GetModuleHandle(NULL);

m_applicationName = L"Engine";

wc.style         = CS_HREDRAW;
wc.lpfnWndProc   = WndProc;
wc.hInstance     = m_hinstance;
wc.hIcon         = LoadIcon(NULL, IDI_WINLOGO);
wc.hIconSm       = wc.hIcon;
wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
wc.lpszMenuName  = NULL;
wc.lpszClassName = m_applicationName;
wc.cbSize        = sizeof(WNDCLASSEX);

    //etc 
    //set full screen mode
    //set window to front
    //hide mouse

当我研究这个时,我看到很多人使用objective-c 或coco,我是否必须使用objective-c 或coco 才能得到我想要的结果?如果可以,我还能在 coco 库中使用 c++ 或 Objective-c++ 吗?

最后,与 mac 中的 messagebox() 最简单的等价物是什么?我使用了 NSGetCriticalAlertPanel() 但我似乎无法让它工作(主要是因为我找不到我必须包含的相应库)。

PS:我正在使用 xcode 编译器,如果有更好的或者您更喜欢的,请提出建议(我不是 xcode 的忠实粉丝)。

【问题讨论】:

没有办法用openGL创建一个窗口,它是一个仅用于渲染的api。窗口创建将是一些特定于平台的代码,最终您将调用 A(apple)GL 函数来创建 openGL 渲染上下文。 它叫可可而不是可可。是的,你必须使用 Objective-C(/++),因为 MacOS X 基本上植根于它基于消息的 OOP 系统。 Cocoa 之于 MacOS X 就像 Win32 API 之于 windows。 对于初学者(以及类似的端口),我不建议您使用 Cocoa,因为它的学习曲线相当长。相反,请使用 SDL 等库。 感谢所有评论,有人有什么好的教程或参考页面吗? (针对所述主题) 【参考方案1】:

您可以从this SDL - openGL tutorial 开始,它是最新的。您还需要安装XCode 您可能拥有的东西。教程中有关于如何将 inlcude SDL 安装到项目中的详细说明。在一切都初始化并准备好使用之后,你会发现很多general sdl tutorials here,你可以关注这个sdltutorial on openGL。

也许this SDL FAQ 也有帮助。

【讨论】:

以上是关于如何使用 c++ 和 opengl 在 mac 中创建窗口?的主要内容,如果未能解决你的问题,请参考以下文章

在我的 OpenGL C++ 项目中究竟应该在哪里添加我的 BMP 文件?在 Mac 上使用 Xcode

如何使用 xcode 制作简单的 OpenGl C++ 程序

如何用 C++ 编写 Cocoa OpenGL 应用程序?

无法使用 GLEW (mac,c++) 在 openGL 中绘制任何内容

运行使用 OpenGL 3.3 的 mac os x c++ 程序

如何使用 OpenGL 和 GLSL 改变颜色(C++)?