-1
간섭 나는 알파 블렌딩이 활성화하면서 슬릭 사용하여 텍스처를 가져 오는 경우 내가 LWJGL 및슬릭 텍스처 로더와 glBlendFunc이
슬릭에 관한 문제가, 디스플레이 렌더링 중지됩니다!
다음은 코드입니다. 시작시 보라색 사각형이 렌더링됩니다. 버튼 T를 누르면 텍스처를 가져옵니다. 비록 실제로 텍스처를 묶어 본 적이 없지만 화면은 여전히 검은 색으로 변합니다!
import static org.lwjgl.opengl.GL11.GL_BLEND;
import java.io.IOException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;
public class Game {
public static void main(String[] args) throws Exception {
Display.setDisplayMode(new DisplayMode(800, 600));
Display.create();
Game game = new Game();
while (!Display.isCloseRequested()) {
game.update();
}
game.close();
}
public Game() {
initGL();
}
Texture boxTexture;
public void update() {
clearGL();
// Use the texture!
GL11.glColor3f(0.4f, 0.2f, 0.9f);
GL11.glBegin(GL11.GL_QUADS);
GL11.glVertex2f(100, 100);
GL11.glVertex2f(140, 100);
GL11.glVertex2f(140, 140);
GL11.glVertex2f(100, 140);
GL11.glEnd();
if(Keyboard.isKeyDown(Keyboard.KEY_T))
{
try {
boxTexture = TextureLoader.getTexture("png",
ResourceLoader.getResourceAsStream("res/ps.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
Display.update();
}
public void close() {
Display.destroy();
System.exit(0);
}
public void initGL() {
// Enable Alpha Blending
GL11.glEnable(GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA);
// Opengl init
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 500, 0, 500, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
// Enable textures
GL11.glEnable(GL11.GL_TEXTURE_2D);
}
public void clearGL() {
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT);
GL11.glLoadIdentity();
}
}
텍스처를 절대로 바인드하지 않으면, 정의되지 않은 결과를 생성하는'GL_TEXTURE_2D'를 활성화해서는 안됩니다. '(0.0, 0.0, 0.0, 1.0) '이라는 색이 모든 것에 할당 되었기 때문에 검은 화면이 나타나는 것 같습니다. –