我尝试将纹理添加到我的 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 像素,这是图像/纹理的宽度和高度。