7

OpenGL でテクスチャをロードすると、GL_ALPHAピクセルごとに 1 つ ( ) または 3 つのコンポーネント ( GL_RGB) があり、テクスチャが傾いて表示されます。何がこれを実現させるのですか?

追加の詳細として、幅/高さの関係が影響しているようです。たとえば、1366x768(683/384) の画像は傾いて表示されますが、1920x1080(16/9) の画像は正しくマッピングされます。

斜めの画像

4

1 に答える 1

10

これはおそらくパディング/アラインメントの問題です。

デフォルトでは、GL はピクセルの行が 4 バイトの倍数になるようにパディングされることを想定しています。1 バイトまたは 3 バイト幅のピクセルを持つ 1366 幅のテクスチャは、自然に 4 バイトに揃えられません。

これに対する可能な修正は次のとおりです。

  • (たとえば)を使用して、テクスチャがどのようにパックされているかをGLに伝えますglPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  • パディングが何も変更せずに一致するように、テクスチャの寸法を変更します
  • パディングがGLが期待するものと一致するように、テクスチャの読み込みを変更します
于 2013-04-13T05:37:57.603 に答える