1

これらのモードをOPENGLに使用します

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 640, 480, 0, 1, -1);
    glMatrixMode(GL_MODELVIEW);
    glEnable(GL_TEXTURE_2D);

このコードを使用してテクスチャを描画しています

    texture.bind();

    glBegin(GL_QUADS);
    glTexCoord2f(0, 0);
    glVertex2f(x, y);// Upper Left

    glTexCoord2f(1, 0);
    glVertex2f(x + width, y); // Upper right

    glTexCoord2f(1, 1);
    glVertex2f(x + width, y + heigth); // Lower right

    glTexCoord2f(0, 1);
    glVertex2f(x, y + heigth); // Lower left
    glEnd();

テクスチャ自体は Minecraft のもので、16x16 のテクスチャです。しかし、それを 160x160 にスケーリングすると、次の結果が得られます。

ここに画像の説明を入力

4

1 に答える 1

5

GL_TEXTURE_MIN_FILTER&を指定する必要がありますGL_TEXTURE_MAG_FILTER

ピクセルの外観をテクスチャに維持したい場合は、次のようにします。

texture.bind(); // First you bind your texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

それらを「ぼやけた」状態に戻したい場合は、次のようにします。

texture.bind(); // First you bind your texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

複数のテクスチャについては、このように個別に呼び出す必要があることに注意してください。

texture1.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

texture2.bind();
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
于 2013-08-18T11:48:21.793 に答える