ラベル XCODE の投稿を表示しています。 すべての投稿を表示
ラベル XCODE の投稿を表示しています。 すべての投稿を表示

2019年2月20日水曜日

SwiftでGLを動かす


開発環境
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))
    }
}
//////////////////////////////////////////////// ここまで


実行結果









2016年7月9日土曜日

Xcode7.3.1でProfile

Xcode7.3.1でのProfileの手順は、以下の通り

- メニューの、Product -> Profileを選ぶ。
  又は、Run▶ボタンを長押ししてProfileボタンに切り替えて、押して実行する。
- ビルドが終わると、「Choose a prfiling template for:...」のダイアログが表示されるので、「Time Profiler」を選択し「Choose」ボタンを押す。
- 「Instruments」が起動する。
- 「Instruments」の左上の赤い丸ボタンを押す。
- アプリが起動する。アプリを操作する。
- 「Instruments」の左上の四角ボタンを押して止める。
- 「Instruments」に結果が表示される。

以下は、キャプチャー画像。

Profileを選ぶ。

Profileを実行する。

Time Profileを選ぶ。

記録ボタンを押す。

アプリが起動するので、操作して、停止ボタンを押す。

結果が表示される。

2016年2月14日日曜日

2014年10月22日水曜日

Swiftの大きな欠点

IOSのアプリの作り方として、UIの部分を、Objective-Cで作って、その他の部分はC++で作るという人が多いんじゃないかと思う。
C++のソースは、他のプラットフォームと共通で利用できるからである。
Swiftで作ると、他のプラットフォームで利用できない。

これができるのは、Objective-Cのソース内で直接C++のクラスを利用できるからである。
Swiftは、直接C++のクラスを利用できないようなので、これができない。
C++のクラスをObjective-Cでラップすれば、Swiftから呼び出すことができるかもしれないが、手間がかかりそう。

なので、Swiftを使う気にはなれない。
これからも、Objective-C + C++でやっていくと思う。

2014年10月19日日曜日

Mac、XcodeでGLFWをビルド

MacでGLFWをビルドしてみました。以下、その手順です。

http://www.glfw.org/download.html
上のGLFWダウンロードサイトより
glfw-3.0.4.zip
をダウンロードして解凍します。

CMake.appを起動し、
Where is the sourece code: に解凍フォルダを指定し、
Where to build the binaries: に適当な出力フォルダを指定します。
「Configure」ボタンを押します。
Specify the generator for this project で「Xcode」を選択して「Done」を押します。


Worningが出ますが無視して、
「Generae」ボタンを押して生成します。

出力フォルダにGLFW.xcodeprjが出力されます。

生成されたプロジェクトファイルをXcodeで開いて、ビルド&実行します。

Windowsでも同じようにビルドできました。
以下、WindowsでVisualStudio C++ 2010でビルドした時のスクリーンショットです。