5

私は、OpenGLESを使用した場合のUNPACK_FLIP_Y_WEBGLという行に相当するものを見つけようとしてきました。私は解決策を見つけることができませんでした。

誰かが同等のものを見つけるのを手伝ってくれませんか?

よろしく

4

2 に答える 2

11

ES2.0には存在しません。

最良から最悪の順に解決策

  1. コンパイル時に画像を反転します。

    これはプロが行うことです。なぜメモリとコードを浪費するのか、そして必要がないのになぜユーザーに画像の反転を待たせるのか?

  2. 画像を上下逆にロードします(libpngにはそのオプションがあります)

  3. ロード後に裏返します。

    チャネル画像ごとに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;
     }
    
于 2013-03-15T05:54:31.653 に答える
1

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 を呼び出します。

概要:

  1. js は gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true) を呼び出します。WebGL は m_unpackFlipY として保存します。

  2. jsはgl.texImage2Dを呼び出し、WebGLはm_unpackFlipYをチェックし、trueの場合はメモリ内の画像を反転してからglTexImage2Dを呼び出します

于 2016-09-23T16:19:51.703 に答える