当小白挖开gl渲染这个坑的时候,最先遇到的问题一定是窗口。然后就是虐死强迫症系列的剧情。
教程最多的一定是glut系列,然而,放到Xcode里一片黄,原因是苹果在未来要不支持这玩意了。再之后就是glew、glfw等一堆库,到这个时候一个没什么基础的小白玩家应该已经有流失的想法了。
这篇博客主要介绍怎么直接搞出一个干净的glview窗口程序,简简单单的开始OpenGL的新手引导。
然后也可以解决一些问题:
1. 如何创建一个OpenGL窗口
2. glut的警告问题
3. 可以使用4.0以上版本的OpenGL
4. 对于非小白玩家而言可能第3条是最重要的
废话少说,书归正传:
第一步、创建工程
1. 新建一个Cocoa Application工程
2. 拖一个OpenGL View 替换掉原来的默认View
这样这个窗口就可以启动运行了。
第二步、写代码
1. 新建一个Cocoa Class,选择继承自 NSOpenGLView
2. 把上边建好的GLView关联上我们自己的类
这样就可以在我们自己类中调用渲染代码了。
第三步、支持GL4.1
需要实现的函数:
initWithCoder
defaultPixelFormat
prepareOpenGL
drawRect
重点就是在初始化部分,需要设置一下属性才能真正的支持4.1
- (nullable instancetype)initWithCoder:(NSCoder *)coder {
[[self openGLContext] makeCurrentContext];
self = [super initWithCoder:coder];
return self;
}
+ (NSOpenGLPixelFormat*)defaultPixelFormat {
NSOpenGLPixelFormatAttribute attrs[] =
{
NSOpenGLPFADoubleBuffer, // 可选地,可以使用双缓冲
NSOpenGLPFAOpenGLProfile, // Must specify the 3.2 Core Profile to use OpenGL 3.2
NSOpenGLProfileVersion4_1Core,
0
};
return [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
}
这样就是一个可以正常撸的GL窗口程序了。非常适合强迫症玩家入门使用,编译器完全没有警告。
在这就不贴完整代码了。有一个可运行的程序,在github上。
https://github.com/XiaochenFTX/glFirst