mirror of
https://github.com/processing/processing4.git
synced 2026-02-20 13:55:37 +01:00
android sync
This commit is contained in:
@@ -57,7 +57,8 @@ public class PShader {
|
||||
public PShader() {
|
||||
parent = null;
|
||||
pg = null;
|
||||
pgl = null;
|
||||
pgl = null;
|
||||
context = null;
|
||||
|
||||
this.vertexURL = null;
|
||||
this.fragmentURL = null;
|
||||
@@ -73,7 +74,8 @@ public class PShader {
|
||||
this();
|
||||
this.parent = parent;
|
||||
pg = (PGraphicsOpenGL) parent.g;
|
||||
pgl = pg.pgl;
|
||||
pgl = pg.pgl;
|
||||
context = pgl.createEmptyContext();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -117,13 +119,13 @@ public class PShader {
|
||||
protected void finalize() throws Throwable {
|
||||
try {
|
||||
if (vertexShader != 0) {
|
||||
pg.finalizeGLSLVertShaderObject(vertexShader);
|
||||
pg.finalizeGLSLVertShaderObject(vertexShader, context.code());
|
||||
}
|
||||
if (fragmentShader != 0) {
|
||||
pg.finalizeGLSLFragShaderObject(fragmentShader);
|
||||
pg.finalizeGLSLFragShaderObject(fragmentShader, context.code());
|
||||
}
|
||||
if (programObject != 0) {
|
||||
pg.finalizeGLSLProgramObject(programObject);
|
||||
pg.finalizeGLSLProgramObject(programObject, context.code());
|
||||
}
|
||||
} finally {
|
||||
super.finalize();
|
||||
@@ -299,9 +301,9 @@ public class PShader {
|
||||
}
|
||||
|
||||
protected void init() {
|
||||
if (programObject == 0 || contextIsOutdated()) {
|
||||
context = pgl.getContext();
|
||||
programObject = pg.createGLSLProgramObject();
|
||||
if (programObject == 0 || contextIsOutdated()) {
|
||||
context = pgl.getCurrentContext();
|
||||
programObject = pg.createGLSLProgramObject(context.code());
|
||||
|
||||
boolean hasVert = false;
|
||||
if (vertexFilename != null) {
|
||||
@@ -361,6 +363,10 @@ public class PShader {
|
||||
protected boolean contextIsOutdated() {
|
||||
boolean outdated = !pgl.contextIsCurrent(context);
|
||||
if (outdated) {
|
||||
pg.removeGLSLProgramObject(programObject, context.code());
|
||||
pg.removeGLSLVertShaderObject(vertexShader, context.code());
|
||||
pg.removeGLSLFragShaderObject(fragmentShader, context.code());
|
||||
|
||||
programObject = 0;
|
||||
vertexShader = 0;
|
||||
fragmentShader = 0;
|
||||
@@ -423,7 +429,7 @@ public class PShader {
|
||||
* @param shaderSource a string containing the shader's code
|
||||
*/
|
||||
protected boolean compileVertexShader() {
|
||||
vertexShader = pg.createGLSLVertShaderObject();
|
||||
vertexShader = pg.createGLSLVertShaderObject(context.code());
|
||||
|
||||
pgl.glShaderSource(vertexShader, vertexShaderSource);
|
||||
pgl.glCompileShader(vertexShader);
|
||||
@@ -443,7 +449,7 @@ public class PShader {
|
||||
* @param shaderSource a string containing the shader's code
|
||||
*/
|
||||
protected boolean compileFragmentShader() {
|
||||
fragmentShader = pg.createGLSLFragShaderObject();
|
||||
fragmentShader = pg.createGLSLFragShaderObject(context.code());
|
||||
|
||||
pgl.glShaderSource(fragmentShader, fragmentShaderSource);
|
||||
pgl.glCompileShader(fragmentShader);
|
||||
@@ -461,16 +467,16 @@ public class PShader {
|
||||
|
||||
protected void release() {
|
||||
if (vertexShader != 0) {
|
||||
pg.deleteGLSLVertShaderObject(vertexShader);
|
||||
pg.deleteGLSLVertShaderObject(vertexShader, context.code());
|
||||
vertexShader = 0;
|
||||
}
|
||||
if (fragmentShader != 0) {
|
||||
pg.deleteGLSLFragShaderObject(fragmentShader);
|
||||
pg.deleteGLSLFragShaderObject(fragmentShader, context.code());
|
||||
fragmentShader = 0;
|
||||
}
|
||||
if (programObject != 0) {
|
||||
pg.deleteGLSLProgramObject(programObject);
|
||||
pg.deleteGLSLProgramObject(programObject, context.code());
|
||||
programObject = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user