OpenFrameworks for Visual studio

提供:kuhalaboWiki
移動: 案内, 検索

目次

概要

oFのリファレンス、チュートリアルは以下から参照できます。

http://openframeworks.cc/

セットアップ

Visual Studioの準備

開発環境は Microsoft Visual Studio 2017を使います。 Visual Studioを使用するにあたって、以下の準備をしてください。

  • 以下のフォルダー内の全てのファイルを削除します。
    • Usersは「ユーザー」と表示されます。
    • AppDataは隠しファイルなので、エクスプローラーの「表示」メニューから「隠しファイル」にチェックを入れます。
C:\Users\ログイン名\AppData\Local\Microsoft\MSBuild\v4.0
  • 上記の操作後、再起動してください。

openFrameworksの準備

  • Windows Visual Studio版v0.9.2を使用します。
  • 以下のサイトからダウンロードしてください。
    • http://openframeworks.jp/download/
    • 「windows download openFrameworks for visual studio」をダブルクリックして、of_v0.9.2_vs_release.zipをダウンロードします。(約328MB)
  • PC演習室のdeliveryドライブからも配布します。
  • of_v0.9.2_vs_release.zipを解凍すると、of_v0.9.2_vs_releaseフォルダー(約1.6GB)ができます。
  • このフォルダーをして、自分のポータブルハードディスク、または、PC演習室の、seminarドライブのgenerativeフォルダー内に移動してください。
  • プログラム開発は、このof_v0.9.2_vs_releaseフォルダー(以下、ofフォルダーと略す)内で行います。

また、このofフォルダーを持ち歩けば、Visual Studioの入ったパソコンならどこでも、開発ができます。

  • ofフォルダーの構成
    • exampleフォルダー サンプルプログラムが入っている。
    • appsフォルダー MyAppsフォルダーに自作のプログラムを入れる。
    • addonsフォルダー 機能を追加するときには、ここにアドオンを入れる。すでにいろいろ入っている。
0.9.2での変更点
https://qiita.com/2bbb/items/13f2e20760ec61e3ec89

サンプルの実行

ofフォルダー内のexampleフォルダーにはたくさんのサンプルプログラムが入っているので、いろいろ試してみるとよい。

例 graphicExample graphicExampleフォルダー内のgraphicExample.sln(ソルーション)または、graphicExample.vcxproj(VC++プロジェクト)をダブルクリックして、プロジェクトを立ち上げてみる。

  • Visual studioではプログラムをプロジェクトという単位で管理する。複数のプロジェクトをまとめたものをソリューションという。この授業では、複数のプロジェクトからなるソリューションは扱わない。

Microsoft Visual Studioが立ち上がり、サンプルプログラムのプロジェクトが開かれる。

  • ソリューションエクスプローラーに、プロジェクトの構成要素がリストされている。
  • プログラム本体のソースコードはsrcに含まれている。
    • main.cpp ofApp.cpp ofApp.hの3つのプログラムが基本。このうち、ofApp.cppが一番、重要。
    • setup() update() draw() の流れでプログラムが実行される。

プログラムを実行してみる。

  • ウィンドウの上部中央にある緑色の三角ボタンをクリックする。

binフォルダーには、実行形式exeファイルができている。 これをダブルクリックすると、プログラムが実行される。

プロジェクトの作成

  1. oFフォルイダー内のprojectGenerator-vsフォルダー内のprojectGenerator.exeを実行する。
  2. Project Name:に、プロジェクトの名前を入れる。
  3. Project Path:から保存先を確認する。通常は、変更しなくてよい。
  4. Addons:に、使用する追加機能(アドオン)を入れる。通常は、なしでよい。
  5. Generateをクリックする。
  6. Apps内のMyAppsにマイプロジェクトが作成されている。
  7. Open IDEをクリックした場合
    • Visual Studio 2017が立ち上がることを確認する。(2015だとビルドできません)
  8. Closeをクリックした場合
    • Apps内のMyAppsに作成したプロジェクトフォルダーを開く。
    • プロジェクト名.slnファイルを右クリックして、「プログラムを開く」からVisual Studio 2017を起動する。
  9. 「プロジェクトの再ターゲット」が出た場合、以下のように設定する。
    • Windows SDK バージョン: 10.0.***
    • プラットフォームツールセット: v141へのアップグレード
    • チェックボックスはそのまま
  10. 作成したプロジェクトを起動し、srcを見てみる。
    • ofApp.xppのメソッドの中身が空っぽ。
    • ここにプログラムを書いていく。

クラスの作成

  1. 新しくクラスを作るには、「プロジェクト > 新しい項目の追加...」 を開き,「C++ファイル」「ヘッダーファイル」を一つずつ作る。
    • 名前を それぞれXxx.cppXxx.hとし、場所はともに ..\src とする
    • (注)「クラスの追加」や「クラスウィザード」は使えない。
  2. マウスカーソルをソリューションエクスプローラー上のsrcに置き、ハイライトさせる。
  3. ソリューションエクスプローラー上のsrcの中にXxx.cppXxx.h が新規作成される。

ヘッダファイル Xxx.h は,

#pragma once
#include "ofMain.h"

class Xxx {
private:
	ofPoint pos;
	float radius;

public:
	Xxx();
	void hogehoge();
};

などと、記述する。

  • ofMain.h をインクルードし、クラスの定義の最後にセミコロンがつくことに注意する。
  • #pragma once は,このヘッダファイルを複数回読み込まないようにするためのもの。
  • 括弧で囲まれた部分 {...} には,変数の宣言やメソッド(関数)の宣言を書く
  • private: に続く部分には,クラス内部のみで利用する変数、メソッドを宣言する。
  • public: に続く部分には,クラス外部からアクセスできる変数、メソッドを宣言する。
  • Xxx(): はコンストラクターといい、クラスと同じ名前のメソッドである。クラスのインスタンスを生成するときの初期化処理などを記述する。

C++ファイル Xxx.cpp は,

#include "Xxx.h" // クラスのヘッダーを読み込む

Xxx::Xxx(){
	pos = ofPoint(ofGetWidth()/2, ofGetHeight()/2);
	radius = 100.0;
}

void Xxx::hogehoge(){
	ofSetColor(31, 63, 255, 100);
	ofCircle(pos.x, pos.y, radius);

	ofSetColor(255, 0, 0, 200);
	ofCircle(pos.x, pos.y, radius);
}

などと、メソッドの本体を記述する。

  • メソッドの定義の最後にセミコロンがつかないことに注意する。


もとのcppファイルodApp.cppのヘッダーファイルofApp.hに、Xxx.hをincludeする。 例えば、ofApp.hは、以下のとおり。

#pragma once

#include "ofMain.h"
#include "Ball.h"

class ofApp : public ofBaseApp{
public:
	bool mouse_pressed;

public:
	void setup();
	void update();
	void draw();

	void keyPressed(int key);
	void keyReleased(int key);
	void mouseMoved(int x, int y );
	void mouseDragged(int x, int y, int button);
	void mousePressed(int x, int y, int button);
	void mouseReleased(int x, int y, int button);
	void windowResized(int w, int h);
	void dragEvent(ofDragInfo dragInfo);
	void gotMessage(ofMessage msg);

	Xxx myCbj;
};

publicの領域にXxxクラスのインスタンスmyObjを宣言している。

個人用ツール
名前空間

変種
操作
案内
ツールボックス