Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #version 400 core
- in vec2 pass_textureCoords
- out vec4 out_Color;
- uniform sampler2D textureSampler;
- void main(void) {
- out_Color = texture(textureSampler,pass_textureCoords);
- }
- #version 400 core
- in vec2 pass_textureCoords
- out vec4 out_Color;
- uniform sampler2D textureSampler;
- void main(void) {
- out_Color = texture(textureSampler,pass_textureCoords);
- }
- package shaders;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import org.lwjgl.opengl.GL11;
- import org.lwjgl.opengl.GL20;
- public abstract class ShaderProgram {
- private int programID;
- private int vertexShaderID;
- private int fragmentShaderID;
- public ShaderProgram(String vertexFile,String fragmentFile){
- vertexShaderID = loadShader(vertexFile,GL20.GL_VERTEX_SHADER);
- fragmentShaderID = loadShader(fragmentFile,GL20.GL_FRAGMENT_SHADER);
- programID = GL20.glCreateProgram();
- GL20.glAttachShader(programID,vertexShaderID);
- GL20.glAttachShader(programID, fragmentShaderID);
- GL20.glLinkProgram(programID);
- GL20.glValidateProgram(programID);
- bindAttributes();
- }
- public void start(){
- GL20.glUseProgram(programID);
- }
- public void stop(){
- GL20.glUseProgram(0);
- }
- public void cleanUp(){
- stop();
- GL20.glDetachShader(programID, vertexShaderID);
- GL20.glDetachShader(programID, fragmentShaderID);
- GL20.glDeleteShader(vertexShaderID);
- GL20.glDeleteShader(fragmentShaderID);
- GL20.glDeleteProgram(programID);
- }
- protected abstract void bindAttributes();
- protected void bindAttribute(int attribute, String variableName){
- GL20.glBindAttribLocation(programID,attribute,variableName);
- }
- private static int loadShader(String file, int type){
- StringBuilder shaderSource = new StringBuilder();
- try{
- BufferedReader reader = new BufferedReader(new FileReader(file));
- String line;
- while((line = reader.readLine())!=null){
- shaderSource.append(line).append("//n");
- }
- reader.close();
- }catch(IOException e){
- e.printStackTrace();
- System.exit(-1);
- }
- int shaderID = GL20.glCreateShader(type);
- GL20.glShaderSource(shaderID, shaderSource);
- GL20.glCompileShader(shaderID);
- if(GL20.glGetShaderi(shaderID, GL20.GL_COMPILE_STATUS )== GL11.GL_FALSE){
- System.out.println(GL20.glGetShaderInfoLog(shaderID, 500));
- System.err.println("Could not compile shader!");
- System.exit(-1);
- }
- return shaderID;
- }
- }
- package shaders;
- public class StaticShader extends ShaderProgram{
- private static final String VERTEX_FILE = "src/shaders/vertexShader.txt";
- private static final String FRAGMENT_FILE = "src/shaders/fragmentShader.txt";
- public StaticShader() {
- super(VERTEX_FILE, FRAGMENT_FILE);
- }
- @Override
- protected void bindAttributes() {
- super.bindAttribute(0, "position");
- super.bindAttribute(1, "textureCoords");
- }
- }
- package models;
- import textures.ModelTexture;
- public class TexturedModel {
- private RawModel rawModel;
- private ModelTexture texture;
- public TexturedModel(RawModel model, ModelTexture texture){
- this.rawModel = model;
- this.texture = texture;
- }
- public RawModel getRawModel() {
- return rawModel;
- }
- public ModelTexture getTexture() {
- return texture;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement