私は OpenGL オフスクリーン フレームバッファ オブジェクトにレンダリングしており、それを画像として保存したいと考えています。FBOは表示サイズよりも大きいことに注意してください。オフスクリーン バッファにレンダリングし、それをテクスチャとして使用できます。オフセットを使用して、ディスプレイ全体でこの大きなテクスチャを「スクロール」できます。これにより、ウィンドウよりも大きなコンテキストにレンダリングすることを確信できます。
オフスクリーン バッファを画像ファイルに保存すると、常にトリミングされます。保存用のコード フラグメントは次のとおりです。
void ofFBOTexture::saveImage(string fileName) {
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
// get the raw buffer from ofImage
unsigned char* pixels = imageSaver.getPixels();
glReadPixels(0, 0, 1024, 1024, GL_RGB, GL_UNSIGNED_BYTE, pixels);
imageSaver.saveImage(fileName);
}
画像の内容は切り取られ、表示されている部分は正しく保存されます (つまり、ピクセル形式のエラーや GL_RGB の問題などはありません) が、残りのスペースは 1 つの色で塗りつぶされます。
だから、私の質問は - 私が間違っているのは何ですか?