即使我指定了Nearest,OpenGL Texture也在使用线性过滤

时间:2015-07-28 19:42:58

标签: java opengl textures lwjgl

我想制作一款8bit风格的游戏,因此我的所有纹理都是16x16,可以扩展到128x128。但是我注意到,当我这样做时,他们很模糊。我预料到这一点并使用:

glTexParameteri( GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER,GL11.GL_NEAREST)

但这并没有帮助。所以我开始研究,我发现了一个问题,谈到使用黑白棋盘来了解发生了什么。我用黑白棋盘替换了我的纹理,这就是我得到的:

http://imgur.com/mScUVJz

奇怪的是,即使我指定最近它正在使用线性。有什么帮助吗?

编辑:我的纹理是POT,也是我正在绘制它的表面。

<小时/>

纹理绘图代码

    GL11.glEnable(GL11.GL_BLEND);
    GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
    GL11.glEnable(GL11.GL_TEXTURE_2D);
    tex.bind();
    GL11.glBegin(GL11.GL_QUADS);
                GL11.glTexCoord2d(0,0);
                GL11.glVertex2d(0, 0); // Upper-left
                GL11.glTexCoord2d(1,0);
                GL11.glVertex2d(1024,0); // Upper-right
                GL11.glTexCoord2d(1, 1);
                GL11.glVertex2d(1024,1024); // Bottom-right
                GL11.glTexCoord2d(0,1);
                GL11.glVertex2d(0,1024); // Bottom-left
    GL11.glEnd();
    GL11.glDisable(GL11.GL_TEXTURE_2D);
    GL11.glDisable(GL11.GL_BLEND);

GL初始代码

GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glViewport((int)0, (int)0, (int)screenWidth, (int)screenHeight);
GL11.glOrtho(0, 1920, 1440, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glTexParameteri( GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER,GL11.GL_LINEAR);
GL11.glTexParameteri( GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER,GL11.GL_LINEAR);

0 个答案:

没有答案