私は、OpenGLESを使用した場合のUNPACK_FLIP_Y_WEBGLという行に相当するものを見つけようとしてきました。私は解決策を見つけることができませんでした。
誰かが同等のものを見つけるのを手伝ってくれませんか?
よろしく
私は、OpenGLESを使用した場合のUNPACK_FLIP_Y_WEBGLという行に相当するものを見つけようとしてきました。私は解決策を見つけることができませんでした。
誰かが同等のものを見つけるのを手伝ってくれませんか?
よろしく
ES2.0には存在しません。
最良から最悪の順に解決策
コンパイル時に画像を反転します。
これはプロが行うことです。なぜメモリとコードを浪費するのか、そして必要がないのになぜユーザーに画像の反転を待たせるのか?
画像を上下逆にロードします(libpngにはそのオプションがあります)
ロード後に裏返します。
チャネル画像ごとにRGBA8ビットを想定すると、所定の位置に反転するコードは次のようになります。
void flipInPlace(unsigned char* data, int width, int height) {
size_t line_size = width * 4;
unsigned char* line_buffer = new unsigned char[line_size];
int half_height = height / 2
for (int y = 0; y < halfHeight) {
void* top_line = data + y * line_size;
void* bottom_line = data + (height - y - 1) * line_size;
memcpy(line_buffer, top_line, line_size);
memcpy(top_line, bottom_line, line_size);
memcpy(bottom_line, line_buffer, line_size);
}
delete [] line_buffer;
}
OpenGL ES には UNPACK_PREMULTIPLY_ALPHA_WEBGL と UNPACK_FLIP_Y_WEBGL はありません。
実装では、WebGL は OpenGL ES を呼び出して js WebGL 呼び出しを実装します。これらの 2 つのパラメーターについて、WebGL は OpenGL ES API を呼び出す前に CPU で処理します。つまり、WebGL は memcpy を使用して画像を反転し (flipY が true の場合)、glTexImage2D を呼び出します。
概要:
js は gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true) を呼び出します。WebGL は m_unpackFlipY として保存します。
jsはgl.texImage2Dを呼び出し、WebGLはm_unpackFlipYをチェックし、trueの場合はメモリ内の画像を反転してからglTexImage2Dを呼び出します