0
当我试图在四边形上绘制纹理(仅包含红色)时,我得到如下所示的结果:enter image description here 它不涵盖所有四边形,只包含其中的一部分。我尝试了不同的尺寸(当然,它们的宽度和高度都是偶数),图片格式,试图使用Paint和Photoshop来制作,但总是得到相同的结果。LWJGL无法正确绘制纹理
这里是我的代码:
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);
}
}
}
从图片我猜,矩形只覆盖屏幕的一部分,并且纹理应用于完整的矩形。 (因为你绘制的四边形总是100px的大小) – BDL
纹理的大小是多少?我相信Slick为2种尺寸的纹理贴上纹理。 –