많은 것을 시도했지만 지금까지 아무 것도 작동하지 않았습니다. 처음에는 문제는 프로그램을 실행할 때 빈 화면이 있다는 것입니다. 마침내 빈 흰색 사각형을 표시했습니다. 내 이미지는 128x128이고 다른 이미지는 512x512입니다.Java lwjgl 및 slick이 내 텍스처를 표시하지 않습니다.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.FileNotFoundException;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.Color;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;
import org.lwjgl.input.Mouse;
import java.util.Random;
public class TextureDemo
{
private static Texture wood;
Random random = new Random();
public TextureDemo()
{
initGL(640, 480, "SLICK TEXTURES");
loadTexture("mozilla");
int x = 100, y = 100, count = 0, width = 0, height = 0, counter = 10;
while(true)
{
count++;
if(count == counter)
{
x--; y--; width++; height++; counter += random.nextInt(50) + 1;
}
render(x, y, width, height);
Display.update();
Display.sync(60);
if(Display.isCloseRequested())
{
wood.release();
Display.destroy();
System.exit(0);
}
}
}
private void initGL(int width, int height, String title)
{
try
{
Display.setDisplayMode(new DisplayMode(width, height));
Display.setTitle(title);
Display.create();
}
catch(LWJGLException e)
{
e.printStackTrace();
Display.destroy();
System.exit(1);
}
GL11.glEnable(GL11.GL_TEXTURE);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, width, 0, height, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
}
public void loadTexture(String key)
{
try
{
wood = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream("./res/images/"+key+".png"));
System.out.println("working." + wood.getTextureID());
}
catch(FileNotFoundException e)
{
e.printStackTrace();
Display.destroy();
System.exit(1);
}
catch(IOException e)
{
e.printStackTrace();
}
}
public void render(int x, int y, int width, int height)
{
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
System.out.println("working." + wood.getTextureID());
GL11.glBegin(GL11.GL_QUADS);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, wood.getTextureID());
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(x, y);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(x + wood.getImageWidth(), y);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(x + wood.getImageWidth(), y + wood.getImageHeight());
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(x, y + wood.getImageHeight());
GL11.glEnd();
System.out.println(wood.getHeight()+ " " +wood.getWidth());
}
public static void main (String[] args)
{
new TextureDemo();
}
}
난 그냥 프로그램에있는 png를 볼 수 있기를 바랍니다. 왜 내가 백인 이미지를 얻는 지 아이디어가 있니? initGL 메소드의 순서가 얼마나 중요합니까?
입력 해 주셔서 감사합니다.하지만 문제는 더 심각해집니다. 화면은 아무것도하지 않기로 돌아갑니다. 유일한 예외는 GL11.glBindTexture (GL_TEXTURE_2D) 만 변경하면됩니다. 그것이 그것으로 바뀌면 그것은 동일하게 유지됩니다. 하지만 glEnable (GL_TEXTURE_2D)를 수행하면 아무 것도 수행하지 않습니다. – user2727211
업데이트를 확인하십시오. –
회색 색상은 어떻게 만들 수 있습니까? – user2727211