OpenGLでレンダリングされた画像を、の助けを借りてムービーファイルに記録したいと思いますAVAssetWriter
。OpenGLフレームバッファからピクセルにアクセスする唯一の方法は、iOSでRGBAピクセル形式のみをサポートするglReadPixelsを使用することであるという問題が発生します。ただし、AVAssetWriter
この形式はサポートされていません。ここでは、ARGBまたはBGRAのいずれかを使用できます。アルファ値は無視できるので、RGBAをARGBに変換する最も速い方法は、glReadPixelsに1バイトシフトしたバッファーを与えることであるという結論に達しました。
UInt8 *buffer = malloc(width*height*4+1);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer+1);
問題は、呼び出しがクラッシュglReadPixels
につながることです。EXC_BAD_ACCESS
バッファを1バイトシフトしないと、完全に機能します(ただし、ビデオファイルの色が間違っていることは明らかです)。ここでの問題は何ですか?