gpt4 book ai didi

c - OS X 如何使用 OpenGL 上下文创建窗口

转载 作者:太空狗 更新时间:2023-10-29 15:35:28 27 4
gpt4 key购买 nike

不使用 GLUT 或 SDL 等多平台库。

在 C(非 Objective-C)中,我如何创建一个窗口,其中包含我可以绘制的有效 OpenGL 上下文?

我希望能够从命令行编译它,所以请不要使用 XCode 拖放东西!

最佳答案

正确理解您的问题的假设很少:

  1. 有一个 API 可以在其中开发您的应用程序作为一个整体,例如 Cocoa API。假设这就是您要求“最好使用 Cocoa”的意思。

  2. 基本的 OpenGL 绘图例程是纯 C 语言,无论是否包含在 GLUT、Cocoa 或其他语言中。

  3. 在 Cocoa API 中没有“使用 OpenGL 上下文创建窗口”这样的方法,AFAIK。您首先必须创建一个这样的窗口,无论是以编程方式还是使用 Interface Builder。

您可以使用 Interface Builder(在 Xcode 中)设置显示 OpenGL 绘图的窗口。以下不是工作代码,它只是一个最简单的案例演练。然后您必须声明一个接口(interface),例如:

@interface myOpenGLView :NSOpenGLView
{
@public
//declare public members
@private
//declare private members
}
//declare properties and methods
- (void) drawRect: (NSRect) bounds;
@end

myOpenGLView *myView;

它是 NSOpenGLView 的子类。习惯上这被写入一个单独的类 .m 和 .h 文件,而不是在 AppDelegate 中。

将 OpenGLView 从 Objects Palette 拖到您的窗口后,确保在 Xcode 右 Pane (实用程序区域)中将其声明为自定义类 myOpenGLView。到这里为止,我无法想象没有 Objective-C 的情况。但是,在方法体内,您仍然处理传统风格的 OpenGL-C。

-(void) drawRect: (NSRect) bounds
{
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);
drawSomething();
glFlush();
}

更新绘图的方法不应显式绘制,而应调用以下方法:

[self.myView setNeedsDisplay: YES];

当然还有更多内容,具体取决于您所追求的内容的复杂程度。有几个简单的例子可以帮助您开始学习 OS X 中的 OpenGL,例如: https://developer.apple.com/library/mac/documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_drawing/opengl_drawing.html

或者这个: Creating an OpenGL View without Interface Builder

甚至这个: https://www.youtube.com/watch?v=7ModmPsxhug

但是在 Cocoa 中创建 OpenGL View 一点也不轻松。这需要一点学习耐心,这是有返回的。我希望这能有所帮助。

关于c - OS X 如何使用 OpenGL 上下文创建窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29067439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com