2021-08-16
openFrameworks
ofSetBackgroundAuto(false)で1frame目から描画する
openFrameworksでブラーなどのように前frameの画を残して描く際にofSetBackgroundAuto(false)を使います.
が.
どうも1frame目から描けない謎がありました. 未だに完全には原因不明ですが, 一応荒業(?)での解決もできたので念のため記録まで.
事前) ofSetBackgroundAuto(true)の場合
1frameから描画できることの確認
https://github.com/KeitaSumiya/oF/tree/master/drawbackgroundauto/0_1_0a_before_true_drawFrom1frame
#include "ofApp.h"
//--------------------------------------------------------------void ofApp::setup(){ ofSetFrameRate(1); ofBackground(0); //ofSetBackgroundAuto(false);}
//--------------------------------------------------------------void ofApp::update(){}
//--------------------------------------------------------------void ofApp::draw(){ count++; cout << count << endl; ofDrawBitmapString(count, 100, 10*count);}
#pragma once
#include "ofMain.h"
class ofApp : public ofBaseApp{
public: void setup(); void update(); void draw(); int count = 0;};
結果
本題) ofSetBackgroundAuto(false)の場合
問題) 4frameから描画されてしまう
https://github.com/KeitaSumiya/oF/tree/master/drawbackgroundauto/0_1_0b_bad_drawFrom4frame
#include "ofApp.h"
//--------------------------------------------------------------void ofApp::setup(){ ofSetFrameRate(1); ofBackground(0); ofSetBackgroundAuto(false);}
//--------------------------------------------------------------void ofApp::update(){}
//--------------------------------------------------------------void ofApp::draw(){ count++; cout << count << endl; ofDrawBitmapString(count, 100, 10*count);}
#pragma once
#include "ofMain.h"
class ofApp : public ofBaseApp{
public: void setup(); void update(); void draw();
int count = 0;};
結果
解決) 1frameから描画できた
https://github.com/KeitaSumiya/oF/tree/master/drawbackgroundauto/0_1_1_better_drawFrom1frame
#include "ofApp.h"
//--------------------------------------------------------------void ofApp::setup(){ ofSetFrameRate(1); ofBackground(0);}
//--------------------------------------------------------------void ofApp::update(){ ofSetBackgroundAuto(false);}
//--------------------------------------------------------------void ofApp::draw(){ ofSetBackgroundAuto(true); count++; cout << count << endl; ofDrawBitmapString(count, 100, 10*count);}
#pragma once
#include "ofMain.h"
class ofApp : public ofBaseApp{
public: void setup(); void update(); void draw();
int count = 0;};
結果


