3

三角形のファンで半円を作りました。コードは次のとおりです。

    marco.bind();
    gl.glPushMatrix();
    gl.glTranslated(-3.5,2,10.51);
    gl.glBegin(gl.GL_TRIANGLE_FAN);
    for(int i = 1; i <= 9; i++){
        double x = 0.7 * Math.cos(angulo);
        double y = 0.7 * Math.sin(angulo);
        System.out.println ("Valor de X:" + x + " Valor de Y:" + y);
        gl.glTexCoord2d(x, y);gl.glVertex3d(x, y, -0.5);
    angulo += inc_angle;

しかし、私が望む視覚効果を達成していません。実際のテクスチャは次のようになります。

ドアのテクスチャ

代わりに、私はこのようなものを得ました:

リアルテクスチャ

今、私はこれを手に入れました

ここに画像の説明を入力

私のイメージに何か問題がありますか?角を切る必要があると思います。

4

1 に答える 1

4

テクスチャ座標は範囲内にあり(0,0) - (1,1)、オブジェクト座標は範囲内にあります(-0.7,-0.7) - (0.7,0.7)。テクスチャの座標を修正するには、オブジェクトの座標を変換する必要があります。

例えば:

double x = Math.cos(angulo);
double y = Math.sin(angulo);
gl.glTexCoord2d(x*0.5+0.5, 1.0-y);
gl.glVertex3d(x*0.7, y*0.7, -0.5);
于 2012-05-29T09:48:14.490 に答える