0

次のようなテクスチャ座標をマッピングしました。

static float texCoord[] = {
0, 1,
1, 1,
1, 0,
0, 0
};

そしてそれを描くことによって:

void Rectangle::Draw()
{
const float vertices[] = {
    x, y,
    x + width, y,
    x, y - height,
    x + width, y - height
};

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glColor3ub(255, 255, 255);

glVertexPointer(2, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_FLOAT, 2, texCoord);

if      (IsTypeHorizontal()) glBindTexture(GL_TEXTURE_2D, texture_H);
else /* (IsTypeVertical())*/ glBindTexture(GL_TEXTURE_2D, texture_V);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);

}

縦(高さ>横)で描かれたテクスチャは良いのですが、横(高さ<幅)で描かれたテクスチャは反転して見えます。テクスチャ座標をtexCoord_HtexCoord_Vで分けても、描画された画像はまだ反転していますか?

まだ何を知る必要がありますか? ここで私のコードの問題は何ですか?

PS。SOIL を使用して OpenGL でテクスチャをアップロードします

4

3 に答える 3

0

試す:

static float texCoord[] = {
0, 1,
1, 1,
0, 0,
1, 0
};
于 2013-04-27T13:55:17.337 に答える
0

ほとんどの OpenGL 初心者は、通常の一連の投影、変換、およびビューポート マッピング パラメータで、OpenGL が画像の原点を左下にあり、座標が右および上に向かって作成されると見なすという事実に混乱します。これは、原点が左上にあり、垂直次元が下に向かって増加すると想定するほとんどのコンピュータ グラフィックス システムとは対照的です。

おそらくそれはあなたの問題です。

于 2013-04-27T15:04:45.603 に答える