From d97c54896d349e8a22c9cafec75c62476c16fdd1 Mon Sep 17 00:00:00 2001
From: Sven Gothel
Date: Mon, 20 Feb 2012 14:43:13 +0100
Subject: Fix commit fb7165e690546359dee92dd60b04be69f141c87e; Clarify
ShaderState.attachShaderProgram(..)
---
.../com/jogamp/opengl/util/glsl/ShaderState.java | 38 +++++-----------------
1 file changed, 9 insertions(+), 29 deletions(-)
(limited to 'src/jogl/classes/com/jogamp')
diff --git a/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderState.java b/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderState.java
index a276018d9..4b680b849 100644
--- a/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderState.java
+++ b/src/jogl/classes/com/jogamp/opengl/util/glsl/ShaderState.java
@@ -197,27 +197,10 @@ public class ShaderState {
* as well as switching to another program on the fly,
* while managing all attribute and uniform data.
*
- * [Re]sets all data and use program in case of a program switch.
+ *
[Re]sets all data and use program in case of a program switch.
*
- * Use program if linked and if previous program was in use.
- *
- * @throws GLException if program was not linked and linking fails
- */
- public synchronized void attachShaderProgram(GL2ES2 gl, ShaderProgram prog) throws GLException {
- attachShaderProgram(gl, prog, false);
- }
-
- /**
- * Attach or switch a shader program
- *
- * Attaching a shader program the first time,
- * as well as switching to another program on the fly,
- * while managing all attribute and uniform data.
- *
- * [Re]sets all data and use program in case of a program switch.
- *
- * Use program if linked and if previous program was in use,
- * or if enable
is true.
+ * Use program, {@link #useProgram(GL2ES2, boolean)},
+ * if enable
is true
.
*
* @throws GLException if program was not linked and linking fails
*/
@@ -227,7 +210,7 @@ public class ShaderState {
if(DEBUG) {
int curId = (null!=shaderProgram)?shaderProgram.id():-1;
int newId = (null!=prog)?prog.id():-1;
- System.err.println("Info: attachShaderProgram: "+curId+" -> "+newId+"\n\t"+shaderProgram+"\n\t"+prog);
+ System.err.println("Info: attachShaderProgram: "+curId+" -> "+newId+" (enable: "+enable+")\n\t"+shaderProgram+"\n\t"+prog);
if(verbose) {
Throwable tX = new Throwable("Info: attachShaderProgram: Trace");
tX.printStackTrace();
@@ -241,15 +224,12 @@ public class ShaderState {
}
return;
}
- prgInUse = shaderProgram.inUse();
-
- if(prgInUse) {
- // only disable if in use
- if(null != prog) {
+ if(shaderProgram.inUse()) {
+ if(null != prog && enable) {
// new program will issue glUseProgram(..)
shaderProgram.programInUse = false;
} else {
- // no new program - disable
+ // no new 'enabled' program - disable
useProgram(gl, false);
}
}
@@ -262,9 +242,9 @@ public class ShaderState {
if(null!=shaderProgram) {
// [re]set all data and use program if switching program,
// or use program if program is linked
- if(shaderProgram.linked() || resetAllShaderData) {
+ if(resetAllShaderData || enable) {
useProgram(gl, true); // may reset all data
- if(!prgInUse && !enable) {
+ if(!enable) {
useProgram(gl, false);
}
}
--
cgit v1.2.3