aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-10-07 19:59:29 +0200
committerSven Gothel <[email protected]>2011-10-07 19:59:29 +0200
commit274df7766467ca79dbd593d59aa1e4908d40cfa5 (patch)
treec3770d2b6d96101b5c5eaa13b86fbaae26177f6d /src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java
parentc8eab433735f5da0779843b227e2f0f5057df776 (diff)
GLArrayData<VBO>: Add GLArrayHandlerFlat ; Update VBO name to interleaved subarrays
- Add GLArrayHandlerFlat gives better distinction of semantics - update sub-array VBO name, if parent's interleaved array initializes it.
Diffstat (limited to 'src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java')
-rw-r--r--src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java39
1 files changed, 28 insertions, 11 deletions
diff --git a/src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java b/src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java
index 0d6da7ba4..c4b761b13 100644
--- a/src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java
+++ b/src/jogl/classes/jogamp/opengl/util/glsl/GLSLArrayHandlerFlat.java
@@ -30,31 +30,48 @@ package jogamp.opengl.util.glsl;
import javax.media.opengl.GL;
import javax.media.opengl.GL2ES2;
-import javax.media.opengl.GLArrayData;
-import jogamp.opengl.util.GLArrayHandler;
+import jogamp.opengl.util.GLArrayHandlerFlat;
+import com.jogamp.opengl.util.GLArrayDataWrapper;
import com.jogamp.opengl.util.glsl.ShaderState;
/**
* Used for interleaved GLSL arrays, i.e. where the buffer data itself is handled
* separately and interleaves many arrays.
*/
-public class GLSLArrayHandlerFlat implements GLArrayHandler {
- private GLArrayData ad;
+public class GLSLArrayHandlerFlat implements GLArrayHandlerFlat {
+ private GLArrayDataWrapper ad;
- public GLSLArrayHandlerFlat(GLArrayData ad) {
+ public GLSLArrayHandlerFlat(GLArrayDataWrapper ad) {
this.ad = ad;
}
- public final void addSubHandler(GLArrayHandler handler) {
- throw new UnsupportedOperationException();
+ public GLArrayDataWrapper getData() {
+ return ad;
}
-
- public final void syncData(GL gl, boolean enable, Object ext) {
- final ShaderState st = (ShaderState) ext;
+
+ public final void syncData(GL gl, boolean enable, boolean force, Object ext) {
if(enable) {
- st.vertexAttribPointer(gl.getGL2ES2(), ad);
+ final GL2ES2 glsl = gl.getGL2ES2();
+ final ShaderState st = (ShaderState) ext;
+
+ st.vertexAttribPointer(glsl, ad);
+ /**
+ * Due to probable application VBO switching, this might not make any sense ..
+ *
+ if(force) {
+ st.vertexAttribPointer(glsl, ad);
+ } else if(st.getAttribLocation(glsl, ad) >= 0) {
+ final int[] qi = new int[1];
+ glsl.glGetVertexAttribiv(ad.getLocation(), GL2ES2.GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING, qi, 0);
+ if(ad.getVBOName() != qi[0]) {
+ System.err.println("XXX1: "+ad.getName()+", vbo ad "+ad.getVBOName()+", gl "+qi[0]+", "+ad);
+ st.vertexAttribPointer(glsl, ad);
+ } else {
+ System.err.println("XXX0: "+ad.getName()+", vbo ad "+ad.getVBOName()+", gl "+qi[0]+", "+ad);
+ }
+ }*/
}
}