LWJGL2(Slick2D)窗口最大化时纹理间出现线条问题修复
问题修复方案
编辑注:该问题已通过如下配置修复:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
将上述代码添加到纹理渲染方法中glEnable(GL_TEXTURE_2D);语句的紧后方即可解决问题。
问题详情
现象
- 游戏窗口最大化时,纹理之间会出现异常线条
- 窗口分辨率为800x600时纹理显示完全正常
- 项目使用Slick2D加载纹理,暂未定位到是否是该组件导致的问题
相关代码
主循环逻辑
主循环while(!Display.isCloseRequested())内的代码如下:
if (Display.wasResized()) { glViewport(0, 0, Display.getWidth(), Display.getHeight()); } glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_TEXTURE_2D); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // 启用Alpha混合 glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glViewport(0,0, Display.getWidth(), Display.getHeight()); glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1); glMatrixMode(GL_MODELVIEW);
纹理渲染方法实现
glEnable(GL_TEXTURE_2D); glDisable(GL_BLEND); texture.bind(); glBegin(GL_QUADS); glTexCoord2d(0, 0); glVertex2d(x, y); glTexCoord2d(1, 0); glVertex2d(x + width, y); glTexCoord2d(1, 1); glVertex2d(x + width, y + height); glTexCoord2d(0, 1); glVertex2d(x, y + height); glEnd(); glEnable(GL_BLEND); glDisable(GL_TEXTURE_2D);
欢迎提供同类问题的解决思路参考。
内容的提问来源于stack exchange,提问作者Wolfsurge
相关产品推荐
相关产品推荐

