package org.newdawn.slick.tests.shader;
import org.lwjgl.Sys;
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.Color;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.opengl.shader.ShaderProgram;
import org.newdawn.slick.util.Log;
/**
* Lesson 1 from the shader tutorial series on the wiki.
*
* @author davedes
*/
public class ShaderLesson1 extends BasicGame {
public static void main(String[] args) throws SlickException {
new AppGameContainer(new ShaderLesson1(), 800, 600, false).start();
}
public ShaderLesson1() {
super("Shader Lesson 1");
}
private ShaderProgram program;
private boolean shaderWorks = false;
@Override
public void init(GameContainer container) throws SlickException {
// this test requires shaders
if (!ShaderProgram.isSupported()) {
// Sys is part of LWJGL -- it's a handy way to show an alert
Sys.alert("Error", "Your graphics card doesn't support OpenGL shaders.");
container.exit();
return;
}
// load our shader program
try {
// load our vertex and fragment shaders
final String VERT = "testdata/shaders/pass.vert";
final String FRAG = "testdata/shaders/lesson1.frag";
program = ShaderProgram.loadProgram(VERT, FRAG);
shaderWorks = true;
} catch (SlickException e) {
// there was a problem compiling our source! show the log
e.printStackTrace();
}
}
@Override
public void render(GameContainer container, Graphics g) throws SlickException {
//start using our program
if (shaderWorks)
program.bind();
//render our shapes with the shader enabled
g.fillRect(220, 200, 50, 50);
//stop using our program
if (shaderWorks)
program.unbind();
String txt = shaderWorks ? "Shader works!" : "Shader did not compile, check log";
g.drawString(txt, 10, 25);
}
@Override
public void update(GameContainer container, int delta) throws SlickException {
}
}