我的问题是java中的opengl,我用lwjgl。我正在尝试从.png文件加载纹理,然后将它们绘制到屏幕上。我面临的问题是,当使用glTexCoord2f选择纹理坐标时,在某些情况下它们会脱离纹理。这通过将大的黑色区域留在绘制的纹理的边缘上来表现其自身。我在网上找到的唯一解决方案是将GL_CLAMP_TO_EDGE添加到GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T参数中。下面是与黑色寄宿生的绿色背景纹理的图片。然后我有与我使用opengl相关的代码。最后,如果重要的是我在Linux上使用Eclipse。感谢您提供任何富有成效的答案。
实施例 textures on green background 代码:初始化opengl
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, width, hight, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
代码:绘制纹理
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
background.bind();
glBegin(GL_QUADS); //Draw Background
glTexCoord2f(0, 0);
glVertex2i(25, 25);//Upper Left
glTexCoord2f(1, 0);
glVertex2i(900, 25);//Upper Right
glTexCoord2f(1, 1f);
glVertex2i(900, 600);//Lower Right
glTexCoord2f(0, 1f);
glVertex2i(25, 600);//Lower Left
glEnd();
statusBarWraper.bind();
glBegin(GL_QUADS); //Drawing the wrapper
glTexCoord2f(0, 0);
glVertex2i(500, 650);//Upper Left
glTexCoord2f(1, 0);
glVertex2i(1000, 650);//Upper Right
glTexCoord2f(1, 1);
glVertex2i(1000, 700);//Lower Right
glTexCoord2f(0, 1);
glVertex2i(500, 700);//Lower Left
glEnd();
statusBar.bind();
glBegin(GL_QUADS); //Drawing progress Bar
glTexCoord2f(0, 0);
glVertex2i(100, 650);//Upper Left
glTexCoord2f(1, 0);
glVertex2i(400, 650);//Upper Right
glTexCoord2f(1, 1);
glVertex2i(400, 675);//Lower Right
glTexCoord2f(0, 1);
glVertex2i(100, 675);//Lower Left
glEnd();