Java 使用OpenGL加载图像时出现的问题
我在加载图像时遇到问题。这是我得到的:。黑色空间不应该在那里。我不知道我的图像或代码是否有问题。我尝试过其他图像,有些图像可以很好地使用此代码,有些则不行Java 使用OpenGL加载图像时出现的问题,java,image,opengl,load,lwjgl,Java,Image,Opengl,Load,Lwjgl,我在加载图像时遇到问题。这是我得到的:。黑色空间不应该在那里。我不知道我的图像或代码是否有问题。我尝试过其他图像,有些图像可以很好地使用此代码,有些则不行 import java.io.IOException; import org.newdawn.slick.opengl.Texture; import org.newdawn.slick.opengl.TextureLoader; import org.newdawn.slick.util.ResourceLoader; import org
import java.io.IOException;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;
import org.newdawn.slick.Color;
import org.lwjgl.opengl.GL11;
public void init() {
try {
texture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("sprites/playButton.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
public void render() {
texture.bind();
Color.white.bind();
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0,0);
GL11.glVertex2f(400-getWidth()/2,250);
GL11.glTexCoord2f(1,0);
GL11.glVertex2f(400+getWidth()/2,250);
GL11.glTexCoord2f(1,1);
GL11.glVertex2f(400+getWidth()/2,250+getHeight());
GL11.glTexCoord2f(0,1);
GL11.glVertex2f(400-getWidth()/2,250+getHeight());
GL11.glEnd();
}
这是主要的渲染功能
public void start() {
try {
Display.setDisplayMode(new DisplayMode(800,600));
Display.setInitialBackground(255, 255, 255);
Display.create();
Display.setVSyncEnabled(true);
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}
// init OpenGL here
MainMenu mainMenu = new MainMenu();
mainMenu.init();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glShadeModel(GL11.GL_SMOOTH);
GL11.glDisable(GL11.GL_DEPTH_TEST);
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glClearColor(255.0f, 255.0f, 255.0f, 0.0f);
GL11.glClearDepth(1);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glViewport(0,0,800,600);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 800, 600, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
while (!Display.isCloseRequested()) {
// render OpenGL here
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
mainMenu.render();
Display.update();
Display.sync(100);
}
我认为问题在于你的纹理加载代码。你也能把它贴出来吗?(或者您正在使用库加载纹理?)关于这一行:GL11.glClearColor(255.0f、255.0f、255.0f、0.0f);请注意,openGL的颜色范围在0到1之间。此外,背景的0 alpha可能会导致一些问题。我建议尝试将其设置为1。不幸的是,我不相信LWJGL支持透明窗口。请尝试调用
System.out.println(ResourceLoader.getResourceAsStream(“sprites/playButton.png”)代码>它打印什么?@Bartvbl我添加了一些库,没有其他纹理加载代码。我还将范围颜色和alpha设置为1,但没有任何更改。@Vallentin我似乎无法成功打印它,因为它不断给我错误(标记上的语法错误)。毕竟这是我第一次尝试lwjgl。