From bb11c498b7d4fe269e7273a1b164e46f3c7a3b50 Mon Sep 17 00:00:00 2001
From: Sven Göthel <sgothel@jausoft.com>
Date: Tue, 9 Jan 2024 03:13:20 +0100
Subject: Graph Clipping: Initial Region impl of AABBox clipping using GLSL
 shader (Convenient using Graph/GraphUI produced AABBox)

Simple demo, setting clip-bbox manually:
- src/demos/com/jogamp/opengl/demos/graph/ui/UIShapeClippingDemo00.java

TODO:
- GLSL: Add missing Mv-multiplication of vertex-position -> gcv_ClipBBoxCoord
-- AABBox min/max should be set pre-multiplied w/ Mv covering an independent area, not per Shape/Region.
-- This to properly work with moving/scaling of each Shape/Region etc
---
 src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

(limited to 'src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java')

diff --git a/src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java b/src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java
index 2cd40c6e4..af8a54177 100644
--- a/src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java
+++ b/src/jogl/classes/com/jogamp/graph/curve/opengl/GLRegion.java
@@ -366,6 +366,7 @@ public abstract class GLRegion extends Region {
         // gca_VerticesAttr.putf(coords, 0, 3);
         // gca_CurveParamsAttr.putf(texParams, 0, 3);
         // gca_VerticesAttr.put3f(coords.x(), coords.y(), coords.z());
+        // System.err.println("GLRegion V: "+coords);
         put3f((FloatBuffer)vpc_ileave.getBuffer(), coords);
         put3f((FloatBuffer)vpc_ileave.getBuffer(), texParams);
         if( hasColorChannel() ) {
@@ -384,6 +385,7 @@ public abstract class GLRegion extends Region {
         if( cc && null == rgba ) {
             throw new IllegalArgumentException("Null color given for COLOR_CHANNEL rendering mode");
         }
+        // System.err.println("GLRegion V: "+coords1+", "+coords2+", "+coords3);
         put3f((FloatBuffer)vpc_ileave.getBuffer(), coords1);
         put3f((FloatBuffer)vpc_ileave.getBuffer(), texParams1);
         if( cc ) {
@@ -531,7 +533,7 @@ public abstract class GLRegion extends Region {
             markStateDirty();
         }
         if( isShapeDirty() ) {
-            updateImpl(gl, curRenderModes);
+            updateImpl(gl, renderer, curRenderModes);
         }
         drawImpl(gl, renderer, curRenderModes, sampleCount);
         clearDirtyBits(DIRTY_SHAPE|DIRTY_STATE);
@@ -544,9 +546,8 @@ public abstract class GLRegion extends Region {
      * objects for use in rendering if {@link #isShapeDirty()}.
      * <p>Allocates the ogl related data and initializes it the 1st time.<p>
      * <p>Called by {@link #draw(GL2ES2, RenderState, int, int, int)}.</p>
-     * @param curRenderModes TODO
      */
-    protected abstract void updateImpl(final GL2ES2 gl, int curRenderModes);
+    protected abstract void updateImpl(final GL2ES2 gl, final RegionRenderer renderer, final int curRenderModes);
 
-    protected abstract void drawImpl(final GL2ES2 gl, final RegionRenderer renderer, int curRenderModes, final int[/*1*/] sampleCount);
+    protected abstract void drawImpl(final GL2ES2 gl, final RegionRenderer renderer, final int curRenderModes, final int[/*1*/] sampleCount);
 }
-- 
cgit v1.2.3