From 3ee4bc62483552925c13004dde6a35c455189060 Mon Sep 17 00:00:00 2001 From: codeanticode Date: Sat, 2 Jul 2011 10:18:14 +0000 Subject: [PATCH] More fixes to the resource backup/(re)allocation/restore mechanism --- .../src/processing/opengl/PFramebuffer.java | 3 +-- .../src/processing/opengl/PShape3D.java | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/java/libraries/opengl/src/processing/opengl/PFramebuffer.java b/java/libraries/opengl/src/processing/opengl/PFramebuffer.java index 486afac1d..de6bed0d0 100644 --- a/java/libraries/opengl/src/processing/opengl/PFramebuffer.java +++ b/java/libraries/opengl/src/processing/opengl/PFramebuffer.java @@ -154,11 +154,10 @@ public class PFramebuffer implements PConstants { } public void backup() { - } public void restore() { - setColorBuffers(colorBufferTex.clone(), colorBufferTex.length); + setColorBuffers(colorBufferTex.clone(), colorBufferTex.length); } public void clear() { diff --git a/java/libraries/opengl/src/processing/opengl/PShape3D.java b/java/libraries/opengl/src/processing/opengl/PShape3D.java index 6bd8f1a2c..824c9912d 100644 --- a/java/libraries/opengl/src/processing/opengl/PShape3D.java +++ b/java/libraries/opengl/src/processing/opengl/PShape3D.java @@ -2212,19 +2212,20 @@ public class PShape3D extends PShape { numTexBuffers = 1; firstVertex = 0; - lastVertex = numVert - 1; + lastVertex = numVert - 1; + + initVertexData(); + initColorData(); + initNormalData(); + initTexCoordData(); } protected void allocate() { release(); // Just in the case this object is being re-allocated. - - initVertexData(); - createVertexBuffer(); - initColorData(); - createColorBuffer(); - initNormalData(); - createNormalBuffer(); - initTexCoordData(); + + createVertexBuffer(); + createColorBuffer(); + createNormalBuffer(); createTexCoordBuffer(); } @@ -2385,8 +2386,10 @@ public class PShape3D extends PShape { protected void deleteTexCoordBuffer() { - for (int i = 0; i < glTexCoordBufferID.length; i++) { - deleteTexCoordBuffer(i); + if (glTexCoordBufferID != null) { + for (int i = 0; i < glTexCoordBufferID.length; i++) { + deleteTexCoordBuffer(i); + } } }