openFrameworks 展示で外部ディスプレイ出力で困るやつ備忘録
背景と目的
PCはmacOSを想定しています、上の図のように、openFrameworksアプリケーションを作って、それを外部ディスプレイにフルスクリーンで表示されなくて困るなんてことありませんか?(この前、自分じゃなくても困ってる現場に遭遇した)
展示系の案件とかで毎回、あれどうやってやるんだったっけと思い出せなくなるので備忘録として残します。
他の手法とか周辺知識に関してはforumで議論されていました
今回のコードはgithubに上がっています
方法
1. SystemPreference
以下の画像の通り、mainをmacOSのPC、subdisplayとして外部のディプレイ(表示に使いたい側)をセットしておきます。
この時、二つのディスプレイの上端が揃っているといろいろコーディングしなくて済みます。
この時右側のディスプレイの大きさ(3440x1440)を覚えておきます。
2. windowSetting
openFrameworksのコード側でwindowSettingというのを変更します。
正確には ofGLFWWindowSettings のことです
変更前
#include "ofMain.h"
#include "ofApp.h"
//========================================================================
int main( ){
ofSetupOpenGL(1024,768,OF_WINDOW); // <-------- setup the GL context
// this kicks off the running of my app
// can be OF_WINDOW or OF_FULLSCREEN
// pass in width and height too:
ofRunApp(new ofApp());
}
変更後
#include "ofMain.h"
#include "ofApp.h"
//========================================================================
int main( ){
ofGLFWWindowSettings windowSettings;
windowSettings.decorated = false;
windowSettings.width = 3440;
windowSettings.height = 1440;
ofCreateWindow(windowSettings);
ofRunApp(new ofApp());
}
windowSettings.decorated
に関しては、縮小拡大閉じるボタンなどを含む外枠をつけるかつけないかの選択肢です、今回フルスクリーンで出したいのでfalseとしています
windowSettings.width
とwindowSettings.height
はwindowの幅と高さです、 SystemPreferenceで控えたディスプレイのサイズを入力しています。
ofCreateWindow
に今まで設定したwindowSettingを渡してWindowを作ります。
次に、適当なものを描画するために、
#include "ofApp.h"
//--------------------------------------------------------------
void ofApp::setup(){
ofSetWindowPosition(ofGetScreenWidth(), 0);
ofSetLineWidth(2);
ofSetCircleResolution(64);
}
//--------------------------------------------------------------
void ofApp::update(){
}
//--------------------------------------------------------------
void ofApp::draw(){
ofBackground(0);
ofDrawCircle(ofGetWidth()/2, ofGetHeight()/2, ofSignedNoise(ofGetElapsedTimef())*1000);
ofDrawLine(0, 0, ofGetWidth(), ofGetHeight());
}
ポイントは
ofSetWindowPosition(ofGetScreenWidth(), 0);
で、windowのポジションをmacOSの画面分横にずらしています。
SystemPreferenceで画面の上端を揃えていない場合、第二引数の0が変わってきて、これを計算するのが面倒なので、揃える形をとりました。
実行結果
実行してみると以下のような結果となります
Author And Source
この問題について(openFrameworks 展示で外部ディスプレイ出力で困るやつ備忘録), 我々は、より多くの情報をここで見つけました https://qiita.com/Hiroki11x/items/ffb1cb2d5e63c7a133ea著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .