1

テクスチャを六角形にマッピングしようとしていますが、テクスチャの座標がわかりません。

These are my vertices:
private float vertices[] = {     0.0f,   0.0f, 0.0f,    //center
                                 0.0f,   1.0f, 0.0f,    // top
                                -1.0f,   0.5f, 0.0f,    // left top
                                -1.0f,  -0.5f, 0.0f,    // left bottom
                                 0.0f,  -1.0f, 0.0f,    // bottom
                                 1.0f,  -0.5f, 0.0f,    // right bottom
                                 1.0f,  0.5f,  0.0f};   // right top

六角形の「底」は垂直です。(主に、いまいましい XD を回転させる方法を理解することができなかったからです) 問題は、テクスチャ座標を把握する方法がわかりません。私はウェブ全体を見てきましたが、それでも成功しませんでした。

単純な正方形をテクスチャリングすることを除けば、私はそれを理解できないので、誰かがテクスチャ座標を理解する方法を説明してくれたら本当にありがたいです。

注: これは「正方形」の六角形なので、円に基づいていません。編集: 六角形は LG_TRIANGLE_STRIP を使用して描画されます。

問題が解決しました。これらの座標を把握する方法がわかりました。これが私のために働いたものです:

private float texture[] = {     0.5f, 0.5f,
                                0.5f, 0.0f,
                                0.0f, 0.25f,
                                0.0f, 0.75f,
                                0.5f, 1.0f,
                                1.0f, 0.75f,
                                1.0f, 0.25f };
4

2 に答える 2

2

テクスチャ座標は、(0.0, 0.0) が左下にある 0.0 から 1.0 までのパーセンテージのように機能します。テクスチャ イメージが 128 x 128 ピクセルの場合、ポイント (0.25, 0.25) は左と下から 32 ピクセルになります。そこにあるものを使用して、六角形を正方形のテクスチャ グラフィックの内側に正確に内接させようとしている場合、座標は次のようになります。

private float textureCoords = { 0.5f, 0.5f,
                                0.5f, 0.0f,
                                0.0f, 0.25f,
                                0.0f, 0.75f,
                                0.5f, 0.0f,
                                1.0f, 0.75f,
                                1.0f, 0.25f };

私の記憶が正しければ、画像を垂直方向に反転することも必要です。

于 2011-06-06T20:21:13.663 に答える
0

私はこの同じ問題に数日間苦労してきましたが、ほぼ頭に浮かんだと思います。六角形の点を中央の A (および DGJ)、12 時の位置の B、および CEFHIK を中心に反時計回りに回転する他の点として想像するとします。

頂点は順番にリストする必要があります - ABC DEF GHI J

A、D、G、J はすべて同じ座標 (中心点)

テクスチャはこの順序でステッチする必要があります - AEF DCB GIH JK

A、D、G、J は再び中心点です。K は E と同じにする必要があります。これにより、テクスチャはそれ自体と正しく整列します。

編集:これを振り返ってみると、2番目と3番目の座標のみを交換し、1.0fから各y座標を差し引く方が理にかなっていると思います。

編集 2: ええ、今確認する時間がありました。各テクスチャのy座標を「-(頂点/ポリゴンの高さ)」に設定するだけでうまくいくようです。2 番目と 3 番目のポイントをそれぞれ入れ替える必要さえありません。テクスチャ座標配列の最後に余分なポイントを追加する必要があります。2 番目のポイントと同じに設定します。

于 2013-04-11T15:16:35.627 に答える