1

openGLで3Dキューブを作成したいと思います。また、テクスチャに変換した画像で両側を覆いたいです。

2Dで立方体の座標を見つけ、QUADS各辺にを作成します。

私の問題は、立方体の側面に対応するテクスチャをレンダリングすると、次の画像に示すように、これらのテクスチャが互いに重なり合っているのが見えることです。

ここに画像の説明を入力してください

私のコードは:

初期化:

glGenTextures(2, textures);
glClearColor (0.0, 0.0, 0.0, 0.0);
glClearDepth(1.0f);                         // Depth Buffer Setup
glEnable(GL_DEPTH_TEST);                        // Enables Depth Testing
glDepthFunc(GL_ALWAYS);

xtureで画像を変換します。

up = imread("up.png");

glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    glBindTexture(GL_TEXTURE_2D, textures[1]);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, up.cols, up.rows, GL_RGB, GL_UNSIGNED_BYTE, up.data);

ディスプレイキューブ:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);

    // Set Projection Matrix
    glMatrixMode (GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0, WIDTH, HEIGHT, 0); 

    // Switch to Model View Matrix
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity(); 

glBindTexture(GL_TEXTURE_2D, textures[1]);
        glBegin(GL_QUADS);
        //sopra
        glTexCoord2f(0.0f, 0.0f); glVertex2f((GLfloat)((coord[6].x)),(GLfloat)(coord[6].y));
        glTexCoord2f(1.0f, 0.0f); glVertex2f((GLfloat)((coord[5].x)),(GLfloat)(coord[5].y));
        glTexCoord2f(1.0f, 1.0f); glVertex2f((GLfloat)((coord[4].x)),(GLfloat)(coord[4].y));
        glTexCoord2f(0.0f, 1.0f); glVertex2f((GLfloat)((coord[7].x)),(GLfloat)(coord[7].y)); 
        glEnd();

立方体の反対側についても同じことをします。テクスチャをレンダリングする順序は次のとおりです。

下(地面)側

上側

裏側

表側

左側

右側

何が間違っているのか、何が欠けているのですか?または、2D座標(glVertex2f (...))で3D立方体を作成できない可能性がありますか?

ご協力いただきありがとうございます!

4

1 に答える 1

2

2D座標で立方体を作成することはできません。それらはすべて空間内の同じ平面上にあるため、側面は重なり合っています。立方体は3D空間にあるため、x、y、zの3つの座標が必要です。

だから使用してみてください:

glVertex3f(x, y, z);

各面が必要な場所に応じて、適切なz値を使用します。

テクスチャについては、引き続き使用できます。

glTexCoord2f(x, y);

テクスチャは2次元空間にあるためです。

それでも座標に何を使用するかについて混乱している場合は、openGLの3D空間を理解するのに役立つようにこれを読むことをお勧めします。

http://www.falloutsoftware.com/tutorials/gl/gl0.htm

于 2013-02-18T23:36:19.990 に答える