OpenGL 2D 视图的最小样板代码是什么?
设置用于绘制 2D 游戏的 OpenGL 视图(具有必要的投影、摄像机角度等)所需的最少样板代码是什么?
例如,在自定义视图中进行 Quartz 2D 绘图(例如加载背景图像)所需的最低要求如下:
#import <Cocoa/Cocoa.h>
@interface MyView : NSView {
}
@end
= = =
#import "MyView.h"
@implementation MyView
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
return self;
}
- (void)drawRect:(NSRect)rect {
CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort];
CGRect frame = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.width, bounds.size.height);
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef url = CFBundleCopyResourceURL(mainBundle, CFSTR("background"), CFSTR("png"), NULL);
CGDataProviderRef provider = CGDataProviderCreateWithURL (url);
CGImageRef image = CGImageCreateWithPNGDataProvider (provider, NULL, true, kCGRenderingIntentDefault);
CGDataProviderRelease (provider);
CGContextDrawImage (myContext, frame, image);
CGImageRelease (image);
//rest of drawing code here...
}
@end
对于 iPhone 上的 Open GS ES 来说,样板代码中的任何内容是否会有所不同?在 Mac 上使用 Open GL?
What's the minimum boilerplate code required to setup an OpenGL view (with the necessary projections,camera angles etc) for drawing a 2D game?
For example, the minimum required to do Quartz 2D drawing in a custom view (and, say, load a background image) is the following:
#import <Cocoa/Cocoa.h>
@interface MyView : NSView {
}
@end
= = =
#import "MyView.h"
@implementation MyView
- (id)initWithFrame:(NSRect)frame {
self = [super initWithFrame:frame];
return self;
}
- (void)drawRect:(NSRect)rect {
CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort];
CGRect frame = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.width, bounds.size.height);
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef url = CFBundleCopyResourceURL(mainBundle, CFSTR("background"), CFSTR("png"), NULL);
CGDataProviderRef provider = CGDataProviderCreateWithURL (url);
CGImageRef image = CGImageCreateWithPNGDataProvider (provider, NULL, true, kCGRenderingIntentDefault);
CGDataProviderRelease (provider);
CGContextDrawImage (myContext, frame, image);
CGImageRelease (image);
//rest of drawing code here...
}
@end
Would anything in the boilerplate code be different for Open GS ES on the iPhone as opposed to using Open GL on a Mac?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 iPhone 上设置 OpenGL 应用程序的最简单方法是通过 Xcode 创建“OpenGL ES 应用程序”。 它会生成您入门所需的样板源代码。
以下是我用于 OpenGL iPhone 游戏的样板源代码:
作为替代方案,本文提供了在 iPhone 上创建 OpenGL ES 应用程序的精彩演练。
The easiest way to setup an OpenGL application on the iPhone is to create a "OpenGL ES Application" through Xcode. It generates the boilerplate source code you'll need to get started.
Here is the boilerplate source I am using for an OpenGL iPhone game:
As an alternative, this article provides a nice walkthrough in creating an OpenGL ES application on the iPhone.
是的。 在 Mac 上,您可以使用 NSOpenGLView,它是应用程序工具包的一部分。 iPhone 没有 AppKit。
我不能肯定地说更多,因为我不是 iPhone 开发人员,但我猜你会使用 EAGL。
Yes. On a Mac, you'd use NSOpenGLView, which is part of Application Kit. The iPhone doesn't have AppKit.
I can't say more for sure because I'm not an iPhone developer, but I would guess that you'll use EAGL on the iPhone.