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;
};
結果