開発環境
Xcode 10.1
プロジェクトの作成
iOS, Single View App を作成する
プロジェクトのオプション
Swiftで作成
Viewクラスを変更
Main.storyboardのViewのCustom Classを「GLKView」に変更する。
ソースコードの変更
ViewController.swiftのコードを以下に変更する。
////////////////////////////////////// ここから
//
// ViewController.swift
// GLSimple
import GLKit
import OpenGLES
class ViewController: GLKViewController {
var context: EAGLContext? = nil
deinit {
self.tearDownGL()
if EAGLContext.current() === self.context {
EAGLContext.setCurrent(nil)
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.context = EAGLContext(api: .openGLES2)
if !(self.context != nil) {
print("Failed to create ES context")
}
let view = self.view as! GLKView
view.context = self.context!
view.drawableDepthFormat = .format24
self.setupGL()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
if self.isViewLoaded && (self.view.window != nil) {
self.view = nil
self.tearDownGL()
if EAGLContext.current() === self.context {
EAGLContext.setCurrent(nil)
}
self.context = nil
}
}
func setupGL() {
EAGLContext.setCurrent(self.context)
// TODO
}
func tearDownGL() {
EAGLContext.setCurrent(self.context)
// TODO
}
// MARK: - GLKView and GLKViewController delegate methods
func update() {
}
override func glkView(_ view: GLKView, drawIn rect: CGRect) {
glClearColor(0.65, 0.65, 0.65, 1.0)
glClear(GLbitfield(GL_COLOR_BUFFER_BIT))
// Render the object with GLKit
glEnable(GLenum(GL_SCISSOR_TEST))
glScissor(GLsizei(view.drawableWidth/4), GLsizei(view.drawableHeight/4),
GLsizei(view.drawableWidth/2), GLsizei(view.drawableHeight/2))
glClearColor(0.65, 0.0, 0.65, 1.0)
glClear(GLbitfield(GL_COLOR_BUFFER_BIT))
glDisable(GLenum(GL_SCISSOR_TEST))
}
}
//////////////////////////////////////////////// ここまで
実行結果