moved load shader functions to PGL

This commit is contained in:
codeanticode
2013-10-20 20:04:34 -04:00
parent cd07991a34
commit 217b63b5f6
2 changed files with 91 additions and 53 deletions

View File

@@ -24,7 +24,10 @@
package processing.opengl;
import processing.core.PApplet;
import processing.core.PGraphics;
import java.io.IOException;
import java.net.URL;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
@@ -1446,6 +1449,57 @@ public abstract class PGL {
}
}
/**
* Loads and compiles the vertex shader contained in file.
*
* @param file String
*/
protected String[] loadVertexShader(String filename) {
return pg.parent.loadStrings(filename);
//PApplet.join(parent.loadStrings(filename), "\n");
}
/**
* Loads and compiles the fragment shader contained in file.
*
* @param file String
*/
protected String[] loadFragmentShader(String filename) {
return pg.parent.loadStrings(filename);
// PApplet.join(parent.loadStrings(filename), "\n");
}
/**
* Loads and compiles the fragment shader contained in the URL.
*
* @param url URL
*/
protected String[] loadFragmentShader(URL url) {
try {
return PApplet.loadStrings(url.openStream());
// PApplet.join(PApplet.loadStrings(url.openStream()), "\n");
} catch (IOException e) {
PGraphics.showException("Cannot load fragment shader " + url.getFile());
}
return null;
}
/**
* Loads and compiles the vertex shader contained in the URL.
*
* @param file String
*/
protected String[] loadVertexShader(URL url) {
try {
return PApplet.loadStrings(url.openStream());
//PApplet.join(PApplet.loadStrings(url.openStream()), "\n");
} catch (IOException e) {
PGraphics.showException("Cannot load vertex shader " + url.getFile());
}
return null;
}
protected int createShader(int shaderType, String source) {
int shader = createShader(shaderType);

View File

@@ -199,8 +199,8 @@ public class PShader implements PConstants {
this.fragmentURL = null;
this.vertexFilename = vertFilename;
this.fragmentFilename = fragFilename;
loadFragmentShader(fragFilename);
loadVertexShader(vertFilename);
fragmentShaderSource = pgl.loadFragmentShader(fragFilename);
vertexShaderSource = pgl.loadVertexShader(vertFilename);
glProgram = 0;
glVertex = 0;
@@ -237,8 +237,41 @@ public class PShader implements PConstants {
this.fragmentURL = fragURL;
this.vertexFilename = null;
this.fragmentFilename = null;
loadFragmentShader(fragURL);
loadVertexShader(vertURL);
fragmentShaderSource = pgl.loadFragmentShader(fragURL);
vertexShaderSource = pgl.loadVertexShader(vertURL);
glProgram = 0;
glVertex = 0;
glFragment = 0;
intBuffer = PGL.allocateIntBuffer(1);
floatBuffer = PGL.allocateFloatBuffer(1);
int vertType = getShaderType(vertexShaderSource, -1);
int fragType = getShaderType(fragmentShaderSource, -1);
if (vertType == -1 && fragType == -1) {
type = PShader.POLY;
} else if (vertType == -1) {
type = fragType;
} else if (fragType == -1) {
type = vertType;
} else if (fragType == vertType) {
type = vertType;
} else {
PGraphics.showWarning(PGraphicsOpenGL.INCONSISTENT_SHADER_TYPES);
}
}
public PShader(PApplet parent, String[] vertSource, String[] fragSource) {
this.parent = parent;
pgl = PGraphicsOpenGL.pgl;
this.vertexURL = null;
this.fragmentURL = null;
this.vertexFilename = null;
this.fragmentFilename = null;
vertexShaderSource = vertSource;
fragmentShaderSource = fragSource;
glProgram = 0;
glVertex = 0;
@@ -856,60 +889,11 @@ public class PShader implements PConstants {
}
/**
* Loads and compiles the vertex shader contained in file.
*
* @param file String
*/
protected void loadVertexShader(String filename) {
vertexShaderSource = parent.loadStrings(filename);
//PApplet.join(parent.loadStrings(filename), "\n");
}
/**
* Loads and compiles the vertex shader contained in the URL.
*
* @param file String
*/
protected void loadVertexShader(URL url) {
try {
vertexShaderSource = PApplet.loadStrings(url.openStream());
//PApplet.join(PApplet.loadStrings(url.openStream()), "\n");
} catch (IOException e) {
PGraphics.showException("Cannot load vertex shader " + url.getFile());
}
}
protected boolean hasVertexShader() {
return vertexShaderSource != null && 0 < vertexShaderSource.length;
}
/**
* Loads and compiles the fragment shader contained in file.
*
* @param file String
*/
protected void loadFragmentShader(String filename) {
fragmentShaderSource = parent.loadStrings(filename);
// PApplet.join(parent.loadStrings(filename), "\n");
}
/**
* Loads and compiles the fragment shader contained in the URL.
*
* @param url URL
*/
protected void loadFragmentShader(URL url) {
try {
fragmentShaderSource = PApplet.loadStrings(url.openStream());
// PApplet.join(PApplet.loadStrings(url.openStream()), "\n");
} catch (IOException e) {
PGraphics.showException("Cannot load fragment shader " + url.getFile());
}
}
protected boolean hasFragmentShader() {
return fragmentShaderSource != null && 0 < fragmentShaderSource.length;
}