From 87ff90fb03216737df70ff83246664b7fba2663e Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Mon, 22 Aug 2011 16:38:45 +0200
Subject: Fix regression of commit 6c346d98f04e2355210960fe9ffde47432f04d62,
 where VBO/attribute binding wasn't updated (VBO data written, shader
 change/switch attribute on same location) ; Optimized interleaved GLSL VBO
 binding, hence split up GLArrayHandler syncData/enableState

---
 .../opengl/util/GLFixedArrayHandlerFlat.java       | 40 ++++++++++++----------
 1 file changed, 21 insertions(+), 19 deletions(-)

(limited to 'src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerFlat.java')

diff --git a/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerFlat.java b/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerFlat.java
index e1cf5d572..4dda9c6a1 100644
--- a/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerFlat.java
+++ b/src/jogl/classes/jogamp/opengl/util/GLFixedArrayHandlerFlat.java
@@ -50,29 +50,31 @@ public class GLFixedArrayHandlerFlat implements GLArrayHandler {
       throw new UnsupportedOperationException();
   }
   
-  private final void passArrayPointer(GLPointerFunc gl) {
-    switch(ad.getIndex()) {
-        case GLPointerFunc.GL_VERTEX_ARRAY:
-            gl.glVertexPointer(ad);
-            break;
-        case GLPointerFunc.GL_NORMAL_ARRAY:
-            gl.glNormalPointer(ad);
-            break;
-        case GLPointerFunc.GL_COLOR_ARRAY:
-            gl.glColorPointer(ad);
-            break;
-        case GLPointerFunc.GL_TEXTURE_COORD_ARRAY:
-            gl.glTexCoordPointer(ad);
-            break;
-        default:
-            throw new GLException("invalid glArrayIndex: "+ad.getIndex()+":\n\t"+ad); 
+  public final void syncData(GL gl, boolean enable) {
+    if(enable) {
+        final GLPointerFunc glp = gl.getGL2ES1();
+        switch(ad.getIndex()) {
+            case GLPointerFunc.GL_VERTEX_ARRAY:
+                glp.glVertexPointer(ad);
+                break;
+            case GLPointerFunc.GL_NORMAL_ARRAY:
+                glp.glNormalPointer(ad);
+                break;
+            case GLPointerFunc.GL_COLOR_ARRAY:
+                glp.glColorPointer(ad);
+                break;
+            case GLPointerFunc.GL_TEXTURE_COORD_ARRAY:
+                glp.glTexCoordPointer(ad);
+                break;
+            default:
+                throw new GLException("invalid glArrayIndex: "+ad.getIndex()+":\n\t"+ad); 
+        }
     }
   }
 
-  public final void enableBuffer(GL gl, boolean enable) {
-    GLPointerFunc glp = gl.getGL2ES1();
+  public final void enableState(GL gl, boolean enable) {
+    final GLPointerFunc glp = gl.getGL2ES1();
     if(enable) {
-        passArrayPointer(glp);
         glp.glEnableClientState(ad.getIndex());        
     } else {
         glp.glDisableClientState(ad.getIndex());
-- 
cgit v1.2.3