0

我尝试将纹理添加到我的 OpenGL 显示中。像正常一样渲染纹理。

获取纹理:

try {
        mainTexture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream(texturePath));
        width = mainTexture.getTextureWidth();
        height = mainTexture.getTextureHeight();
    } catch(IOException e) {
        e.printStackTrace();
    }

渲染纹理:

mainTexture.bind();
    glColor3f(1.0f,1.0f,1.0f);

    glBegin(GL_QUADS);
        glTexCoord2f(0,0);
        glVertex2f(x,y);
        glTexCoord2f(1,0);
        glVertex2f(x + width,y);
        glTexCoord2f(1,1);
        glVertex2f(x + width,y + height);
        glTexCoord2f(0,1);
        glVertex2f(x,y + height);
    glEnd();

在初始化代码中使用它:

glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

这是代码的结果:

纹理/图像是 50x50 像素,位于蓝色框内,但纹理被渲染到白线,黑色就在线条之前。找不到这样做的原因。它应该只渲染 50x50 像素,这是图像/纹理的宽度和高度。

在此处输入图像描述

4

1 回答 1

1

我认为图像大小/尺寸不是两个的幂存在一些问题...阅读此: http: //factor-language.blogspot.com/2009/04/opengl-textures-and-power-of-two -size.html

于 2013-02-22T16:39:08.743 回答