基本的に私はopengl/c++で2Dゲームを作っています。テクスチャがマップされたクワッドがあり、2 のべき乗でない画像を使用できない (または少なくともすべきではない) ため、2 のべき乗画像内に画像があり、余分な画像をテクスチャ マッピングで削除したいと考えています。
GLfloat quadTexcoords[] = {
0.0, 0.0,
0.78125, 0.0,
0.78125, 0.8789,
0.0, 0.8789
};
glGenBuffers(1, &VBO_texcoords);
glBindBuffer(GL_ARRAY_BUFFER, VBO_texcoords);
glBufferData(GL_ARRAY_BUFFER, sizeof(quadTexcoords), quadTexcoords, GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
これは私のテクスチャ コードです。私が知っている特別なことは何もありません。X 座標 ( 0.7256
) は正常に機能し、画像の右側にある余分な画像が削除されます。ただし、Y 座標は機能しません。ゲームをデバッグしたところ、正しい座標がシェーダーに送信されていることがわかりましたが、マップされません。時々逆に動作しているように見えますが、非常に不明確です。
20 のような Y の座標を指定すると、複数回繰り返されますが、クワッドの上部に小さな白い線が残ります。私はそれが何であるかをかすかな考えを持っていません.
その他の詳細: マップしようとしている画像は 800 x 450 で、サイズ 1024 x 512 の画像にラップされています。クワッドを 800 x 450 のアスペクト比でスケーリングします。これが違いを生むとは思えませんが、決して知る!
御時間ありがとうございます。
編集:これは何が起こっているかの例です。
これは、完全にマッピングされた完全なイメージです (X と Y が 0 から 1)。青い部分は高さ 200 ピクセルで、イメージ全体は高さ 300 ピクセルです。
2 番目のイメージは、Y 軸の 3 分の 2 (つまり、Y で 0 から 0.6666) にマップされたイメージです。これにより、上部の白が削除されるはずですが、それは起こっていることではありません. オンラインでいくつかのチュートリアルのマッピングを取得したため、座標が前後しているとは思いません。