0

私は OpenGL を使用しており、tga ファイルを正しくロードできますが、何らかの理由で jpg ファイルをレンダリングすると正しく表示されません。

これは、イメージが次のように見えることになっているものです--

ここに画像の説明を入力

そして、これはどのように見えるか..なぜそれは伸びているのですか?コーディネートのせい?

ここに画像の説明を入力

これが私が描画に使用しているコードです。

void Renderer::DrawJpg(GLuint tex, int xi, int yq, int width, int height) const
{
glBindTexture(GL_TEXTURE_2D, tex);
glBegin(GL_QUADS);
glTexCoord2i(0, 0); glVertex2i(0+xi,   0+xi);
glTexCoord2i(0, 1); glVertex2i(0+xi,   height+xi);
glTexCoord2i(1, 1); glVertex2i(width+xi, height+xi);
glTexCoord2i(1, 0); glVertex2i(width+xi, 0+xi);
glEnd();
}

これは私が画像をロードする方法です...

imagename=s;
ILboolean success;
ilInit();
ilGenImages(1, &id);
ilBindImage(id);
success = ilLoadImage((const ILstring)imagename.c_str());
if (success)
{
    success = ilConvertImage(IL_RGB, IL_UNSIGNED_BYTE); /* Convert every colour component into
                                                         unsigned byte. If your image contains alpha channel you can replace IL_RGB with IL_RGBA */
    if (!success)
    {
        printf("image conversion failed.");
    }
    glGenTextures(1, &id);
    glBindTexture(GL_TEXTURE_2D, id);

    width = ilGetInteger(IL_IMAGE_WIDTH);
    height = ilGetInteger(IL_IMAGE_HEIGHT);

    glTexImage2D(GL_TEXTURE_2D, 0, ilGetInteger(IL_IMAGE_BPP), ilGetInteger(IL_IMAGE_WIDTH),
                 ilGetInteger(IL_IMAGE_HEIGHT), 0, ilGetInteger(IL_IMAGE_FORMAT), GL_UNSIGNED_BYTE,
                 ilGetData());
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);       // Linear Filtered
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);       // Linear Filtered
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

おそらくこれについて言及する必要がありますが、一部の画像は適切にレンダリングされました。幅 != 高さのためだと思いました. しかし、そうではありません。幅 != 高さの画像も正常に読み込まれます。しかし、他の画像では、まだこの問題が発生します。

4

2 に答える 2