LWJGL无法正确绘制纹理

时间:2015-11-04 18:21:04

标签: java opengl lwjgl slick2d

当我尝试在四边形上绘制纹理(仅包含红色)时,我得到这样的结果:enter image description here 它不包括所有四边形,只覆盖它的一部分。我尝试过不同的尺寸(当然,它们的宽度和高度都是偶数),图片格式,尝试使用Paint和Photoshop制作它,但总是得到相同的结果。

这是我的代码:

package test2;

import static org.lwjgl.opengl.GL11.GL_COLOR_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_DEPTH_BUFFER_BIT;
import static org.lwjgl.opengl.GL11.GL_MODELVIEW;
import static org.lwjgl.opengl.GL11.GL_PROJECTION;
import static org.lwjgl.opengl.GL11.GL_QUADS;
import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
import static org.lwjgl.opengl.GL11.glBegin;
import static org.lwjgl.opengl.GL11.glClear;
import static org.lwjgl.opengl.GL11.glClearColor;
import static org.lwjgl.opengl.GL11.glColor3f;
import static org.lwjgl.opengl.GL11.glEnable;
import static org.lwjgl.opengl.GL11.glEnd;
import static org.lwjgl.opengl.GL11.glLoadIdentity;
import static org.lwjgl.opengl.GL11.glMatrixMode;
import static org.lwjgl.opengl.GL11.glOrtho;
import static org.lwjgl.opengl.GL11.glTexCoord2f;
import static org.lwjgl.opengl.GL11.glVertex2i;

import java.io.IOException;

import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;

public class Main {
    public static void main(String[] args){
      try {
        Display.setFullscreen(true);
        Display.setTitle("test");
        Display.create();
    } catch (LWJGLException e) {
        e.printStackTrace();
    }

        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glEnable(GL_TEXTURE_2D);

        while(true){
            glClearColor(1, 1, 1, 1);
            glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

            Texture t = null;

            try {
                t = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("texture.png"));
            } catch (IOException e) {
                e.printStackTrace();
            }

            t.bind();

            glColor3f(1, 1, 1);
            glBegin(GL_QUADS);
            glTexCoord2f(0, 0);
              glVertex2i(100, 100);
            glTexCoord2f(0, 1);
              glVertex2i(100, 200);
            glTexCoord2f(1, 1);
              glVertex2i(200, 200);
            glTexCoord2f(1, 0);
              glVertex2i(200, 100);
            glEnd();


            Display.update();
            Display.sync(60);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

现在我发现,重量和高度呈现(2 ^ n)数字的纹理是完美的。但是我和其他纹理有什么关系呢?是否可以在OpenGL中正确使用它们?