4

OpenGL 3.x の OpenGL SuperBible を読んでいます。「ピクセル パッキングの概念」全体を理解するのに苦労しています。通常、199px 幅の画像には 597 バイトが必要になることがわかります [(199 * 3)3 各カラー チャネル RGB に]。私の最初の質問は、なぜこれが正しい場合があるのか​​ということです。著者は、これは 4 バイトのアラインメント システムでのみ機能すると述べています。彼は続けて、4 で簡単に割り切れるように 3 バイトが追加されると言っていますが、これもわかりません。だから本当に私の質問は、4バイトのアライメントの重要性は何ですか?それは実際にはどういう意味ですか?? 著者は、代替案は 1 バイト アラインメントであると述べていますが、これも理解できません。

著者は、.TGA は 1 バイト アラインまたは「タイト」であり、.bmp は 4 バイト アラインであると述べています。

4 バイト アラインメント、1 バイト アラインメントとは何ですか? また、どちらか一方を使用する必要があるのはなぜですか? テクスチャリングに .tga または .bmp をいつ使用する必要がありますか?

4

2 に答える 2

2

さらに悪いことに、あなたの説明では、ピクセルの配置とスキャンラインの配置が区別されていません。

実際、24 ビット カラーの 199 ピクセルのイメージには 597 バイトが必要です。ただし、2 番目のスキャン ラインはオフセット 600 から始まります。これは、4 バイト境界に位置合わせする必要があり、600 が最初のスキャン ラインと重ならない最初の 4 バイト境界であるためです。

これは、バイトで始まる各ピクセルの代わりに

(x + y * width) * 3

各行はバイトから始まります

y * 600

およびバイト単位の各ピクセル

y * 600 + x * 3

しかし、テクスチャを 2 の累乗にしてみませんか?これは、すべての OpenGL バージョンのすべてのカードでサポートされており、位置合わせの問題が発生しません。テクスチャ座標を使用して、パディングが処理またはレンダリングされないようにします。

于 2013-05-18T01:36:34.277 に答える