aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md28
-rw-r--r--doc/OpenGL_API_Divergence.html540
-rw-r--r--doc/OpenGL_API_Divergence.md61
-rw-r--r--www/index.html20
4 files changed, 633 insertions, 16 deletions
diff --git a/README.md b/README.md
index 2f2ca3c42..0301afd38 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,9 @@ JOGL integrates with the AWT, Swing, OpenJFX and SWT widget sets, as well as wit
JOGL also provides its own [native windowing toolkit, NEWT](https://jogamp.org/jogl/doc/NEWT-Overview.html), running on top of X11, Windows, MacOS and even on bare-metal console mode without a windowing system.
+JOGL contains [Graph](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/graph/curve/OutlineShape.html), [a resolution-independent GPU NURBS curve renderer](https://jausoft.com/blog/2023/02/22/reimagine-java-on-desktop-bare-metal-devices/) suitable for desktop and embedded devices and supporting [text type rendering](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/graph/curve/opengl/TextRegionUtil.html) \[ [paper](https://jogamp.org/doc/gpunurbs2011/p70-santina.pdf), [slides](https://jogamp.org/doc/gpunurbs2011/graphicon2011-slides.pdf) \].
+Graph is used in the contained [Graph UI, enabling immersive UI within the 3D scene](https://jausoft.com/blog/tag/graph_type_rendering/).
+
JOGL is part of [the JogAmp project](https://jogamp.org).
[List of proposed work items & use-cases](https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview)
@@ -28,11 +31,9 @@ Please contact [Göthel Software (Jausoft)](https://jausoft.com/).
## Organization of the JOGL source tree
```
doc/ Build and user documentation
-make/ Ant build scripts,
- see top of build.xml for brief invocation instructions
+make/ Ant build scripts
make/config Configuration files for glue code generation
make/stub_includes Header files for glue code generation
-
src/ Java and native source code for:
src/jogl - JOGL
src/nativewindow - NativeWindow Interface
@@ -40,22 +41,29 @@ src/newt - NEWT
src/graphui - GraphUI
src/demos - Demos
src/test - Unit tests
-
www/ Web pages
```
NativeWindow, NEWT and GraphUI might be build seperately.
## Contact Us
-- JogAmp [http://jogamp.org/](http://jogamp.org/)
-- JOGL Web [http://jogamp.org/](http://jogamp.org/jogl/)
- Forum/Mailinglist [http://forum.jogamp.org/](http://forum.jogamp.org/)
-- Repository [http://jogamp.org/git/](http://jogamp.org/git/)
-- Wiki [https://jogamp.org/wiki/](https://jogamp.org/wiki/)
- Maintainer [https://jogamp.org/wiki/index.php/Maintainer_and_Contacts](https://jogamp.org/wiki/index.php/Maintainer_and_Contacts)
- Sven's Blog [https://jausoft.com/blog/tag/jogamp/](https://jausoft.com/blog/tag/jogamp/)
- Email sgothel _at_ jausoft _dot_ com
+## References
+- [JogAmp Home](https://jogamp.org/)
+- [JOGL Home](https://jogamp.org/jogl/www/)
+- [Git Repository](https://jogamp.org/cgit/jogl.git/about/)
+- [OpenGL Evolution & JOGL](https://jogamp.org/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html)
+- [Mapping of OpenGL Profiles to Interfaces](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description)
+ - [OpenGL API Inclusion Criteria](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#GLAPIInclusionCriteria)
+ - [UML Diagram](https://jogamp.org/jogl/doc/uml/html/index-withframe.html)
+- [JOGL and OpenGL Divergence](https://jogamp.org/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html)
+- [How To Build](https://jogamp.org/jogl/doc/HowToBuild.html)
+- [Wiki](https://jogamp.org/wiki/)
+
## JogAmp History & Milestones
Bottom line, too much work has been performed to be listed here.
@@ -72,7 +80,7 @@ rendering *GL4Java* effectively *JOGL's* predecessor. A few of the concepts reu
- WinHandleAccess -> NativeWindow
- GLDrawableFactory, GLDrawable, GLContext, GLEvenListener
-### GlueGen, JOAL and JOGL at Sun Microsystems
+### GlueGen, JOAL and JOGL at Sun Microsystems & Co
- 2003-06-06 [Initial JOGL code commit](https://jogamp.org/cgit/jogl.git/commit/?id=d49fd968963909f181423eae46c613189468fac3)
- 2003-06-07 [Initial JOAL code commit](https://jogamp.org/cgit/joal.git/commit/?id=5f9e58c5b1a23119a63dfb1e76e73349858439db)
- 2004-02-18 [JOGL version 1.0.0-b01](https://jogamp.org/cgit/jogl.git/commit/?id=9b0fa9dad2b196d8f86e5e6b575deadac059e877)
@@ -86,7 +94,7 @@ rendering *GL4Java* effectively *JOGL's* predecessor. A few of the concepts reu
- 2008-12-xx [OpenMAX and JOGL GL ES2 on embedded Nvidia APX 2500 (Tegra1)](https://www.youtube.com/watch?v=D6Lkw3eZK1w)
- 2009-06-16 [Merged JOGL 2 Branch: NEWT, NativeWindow abstraction, OpenGL profiles, ...](https://jogamp.org/cgit/jogl.git/log/?h=JOGL_2_SANDBOX)
- 2009-07-09 [completed git migration](https://jogamp.org/cgit/jogl.git/commit/?id=9d910cf21fb8a61e3a1604f6258364c3b725964d), see also [this blog](https://jausoft.com/blog/2009/07/08/svn-to-git-migration-1/)
-- 2009-07-24 [Initial JOCL commit](https://jogamp.org/cgit/jocl.git/commit/?id=1737ee672c05d956a99a91d9894556230f6363bc)
+- 2009-07-24 [JOCL initiation](https://jogamp.org/cgit/jocl.git/commit/?id=1737ee672c05d956a99a91d9894556230f6363bc), independent from Sun
- 2009-10-02 [Adding embedded Intel-GDL support (NEWT, EGL, ES2) to JOGL](https://jogamp.org/cgit/jogl.git/commit/?id=52c3caf07ad07fcb029ea584d7e5f4c5031f84c2)
- 2009-10-10 [JOGL Plugin3 Integration](https://jogamp.org/cgit/jogl.git/commit/?id=2268a6ce8a900ae7aa9f20d5f595f811185574a9)
diff --git a/doc/OpenGL_API_Divergence.html b/doc/OpenGL_API_Divergence.html
new file mode 100644
index 000000000..5095e662a
--- /dev/null
+++ b/doc/OpenGL_API_Divergence.html
@@ -0,0 +1,540 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
+<head>
+ <meta charset="utf-8" />
+ <meta name="generator" content="pandoc" />
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
+ <title>OpenGL_API_Divergence.md</title>
+ <style>
+ div#header, header
+ {
+
+ border-bottom: 1px solid #aaa;
+ margin-bottom: 0.5em;
+ }
+
+ .title
+ {
+ text-align: center;
+ }
+
+ .author, .date
+ {
+ text-align: center;
+ }
+
+ div#TOC, nav#TOC
+ {
+
+ border-bottom: 1px solid #aaa;
+ margin-bottom: 0.5em;
+ }
+
+ nav#TOC {
+ margin-bottom: var(--line-height);
+
+ padding-bottom: 0.5rem;
+ }
+
+ nav#TOC input {
+ display: none;
+ }
+
+ nav#TOC label {
+ color: var(--color-link);
+ cursor: pointer;
+ }
+
+ nav#TOC > ul {
+ display: none;
+ }
+
+ nav#TOC > input:checked + ul {
+ display: block;
+ }
+
+ @media print
+ {
+ div#TOC, nav#TOC
+ {
+
+ display: none;
+ }
+ }
+
+ div.content
+ {
+ color: #111111;
+ font-size: 14px;
+ line-height: 1.6;
+ }
+
+ div#cgit a
+ {
+ color: #1212a0;
+ }
+
+ div#cgit a.sourceLine
+ {
+ color: #111111;
+ }
+
+ h1, h2, h3, h4, h5, h6
+ {
+ font-family: "Helvetica Neue", Helvetica, "Liberation Sans", Calibri, Arial, sans-serif;
+
+ page-break-after: avoid;
+
+ margin: 20px 0 10px;
+ padding: 0;
+ }
+
+ h2 {
+ border-bottom: 1px solid #ccc;
+ }
+
+ div div
+ {
+
+ }
+
+ section section
+ {
+ margin-left: 2em;
+ }
+
+ p {}
+
+ blockquote
+ {
+ font-style: italic;
+ }
+
+ li
+ {
+ }
+
+ li > p
+ {
+ margin-top: 1em;
+ }
+
+ ul
+ {
+ }
+
+ ul li
+ {
+ }
+
+ ol
+ {
+ }
+
+ ol li
+ {
+ }
+
+ hr {}
+
+ sub
+ {
+ }
+
+ sup
+ {
+ }
+
+ em
+ {
+ }
+
+ em > em
+ {
+ font-style: normal;
+ }
+
+ strong
+ {
+ }
+
+ a
+ {
+
+ text-decoration: none;
+ }
+
+ @media screen
+ {
+ a:hover
+ {
+
+ text-decoration: underline;
+ }
+ }
+
+ @media print
+ {
+ a {
+
+ color: black;
+ background: transparent;
+ }
+
+ a[href^="http://"]:after, a[href^="https://"]:after
+ {
+
+ content: " (" attr(href) ") ";
+ font-size: 90%;
+ }
+ }
+
+ img
+ {
+
+ vertical-align: middle;
+ }
+
+ div.figure
+ {
+
+ margin-left: auto;
+ margin-right: auto;
+ text-align: center;
+ font-style: italic;
+ }
+
+ p.caption
+ {
+
+ }
+
+ pre, code
+ {
+ background-color: #f8f8f8;
+
+ white-space: pre-wrap;
+ white-space: -moz-pre-wrap !important;
+ white-space: -pre-wrap;
+ white-space: -o-pre-wrap;
+ word-wrap: break-word;
+
+ }
+
+ pre
+ {
+
+ padding: 0.5em;
+ border-radius: 5px;
+
+ background-color: #f8f8f8;
+ border: 1px solid #ccc;
+ font-size: 13px;
+ line-height: 19px;
+ overflow: auto;
+ padding: 6px 10px;
+
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+ }
+
+ @media screen
+ {
+ pre
+ {
+
+ white-space: pre;
+ overflow: auto;
+
+ border: 1px dotted #777;
+ }
+ }
+
+ code
+ {
+ }
+
+ p > code, li > code
+ {
+
+ padding-left: 2px;
+ padding-right: 2px;
+ }
+
+ li > p code
+ {
+
+ padding: 2px;
+ }
+
+ span.math
+ {
+
+ }
+
+ div.math
+ {
+ }
+
+ span.LaTeX
+ {
+ }
+
+ eq
+ {
+ }
+
+ table
+ {
+ border-collapse: collapse;
+ border-spacing: 0;
+
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ thead
+ {
+ border-bottom: 1pt solid #000;
+ background-color: #eee;
+ }
+
+ tr.header
+ {
+ }
+
+ tbody
+ {
+ }
+
+ tr {
+ }
+ tr.odd:hover, tr.even:hover
+ {
+ background-color: #eee;
+ }
+
+ tr.odd {}
+ tr.even {}
+
+ td, th
+ {
+ vertical-align: top;
+ vertical-align: baseline;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ padding-top: 0.2em;
+ padding-bottom: 0.2em;
+ }
+ th
+ {
+ font-weight: bold;
+ }
+
+ tfoot
+ {
+ }
+
+ caption
+ {
+ caption-side: top;
+ border: none;
+ font-size: 0.9em;
+ font-style: italic;
+ text-align: center;
+ margin-bottom: 0.3em;
+ padding-bottom: 0.2em;
+ }
+
+ dl
+ {
+ border-top: 2pt solid black;
+ padding-top: 0.5em;
+ border-bottom: 2pt solid black;
+ }
+
+ dt
+ {
+ font-weight: bold;
+ }
+
+ dd+dt
+ {
+ border-top: 1pt solid black;
+ padding-top: 0.5em;
+ }
+
+ dd
+ {
+ margin-bottom: 0.5em;
+ }
+
+ dd+dd
+ {
+ border-top: 1px solid black;
+ }
+
+ a.footnote, a.footnoteRef {
+ font-size: small;
+ vertical-align: text-top;
+ }
+
+ a[href^="#fnref"], a.reversefootnote
+ {
+ }
+
+ @media print
+ {
+ a[href^="#fnref"], a.reversefootnote
+ {
+
+ display: none;
+ }
+ }
+
+ div.footnotes
+ {
+ }
+
+ div.footnotes li[id^="fn"]
+ {
+ }
+
+ @media print
+ {
+ .noprint
+ {
+ display:none;
+ }
+ }
+ </style>
+</head>
+<body>
+<nav id="TOC" role="doc-toc">
+ <strong>Contents</strong><label for="contents">⊕</label>
+ <input type="checkbox" id="contents">
+ <ul>
+ <li><a href="#jogl-and-opengl-divergence">JOGL and OpenGL
+ Divergence</a>
+ <ul>
+ <li><a href="#overview">Overview</a>
+ <ul>
+ <li><a href="#opengl-debugging">OpenGL Debugging</a></li>
+ <li><a href="#retrieve-mapped-buffers-data">Retrieve Mapped Buffer's
+ Data</a></li>
+ </ul></li>
+ <li><a href="#references">References</a></li>
+ </ul></li>
+ </ul>
+</nav>
+<style>
+table, th, td {
+ border: 1px solid black;
+}
+</style>
+
+<h1 id="jogl-and-opengl-divergence">JOGL and OpenGL Divergence</h1>
+<h2 id="overview">Overview</h2>
+<p>As described in <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description">mapping
+of OpenGL profiles to interfaces</a>, JOGL is mostly API compatible with
+the OpenGL API while packaging functionality in <a
+href="https://jogamp.org/jogl/doc/uml/html/index-withframe.html">OpenGL
+profiles</a>.</p>
+<p>However, there are certain aspects where JOGL diverges due to managed
+code aspects and the Java™ language.</p>
+<h3 id="opengl-debugging">OpenGL Debugging</h3>
+<p>In 2009-2012 the <a
+href="https://www.khronos.org/opengl/wiki/Debug_Output">Debug Output</a>
+extensions <a
+href="http://www.opengl.org/registry/specs/AMD/debug_output.txt">AMD_debug_output</a>
+and <a
+href="https://registry.khronos.org/OpenGL/extensions/ARB/ARB_debug_output.txt">ARB_debug_output</a>
+were created, subsumed to the core via <a
+href="https://registry.khronos.org/OpenGL/extensions/KHR/KHR_debug.txt">KHR_debug</a>.</p>
+<p>They allow applications to <a
+href="https://docs.gl/gl4/glDebugMessageCallback">enable and control
+low-level debugging</a> using the OpenGL implementation.</p>
+<p>These extensions have been subsumed in <a
+href="https://www.khronos.org/opengl/wiki/GLAPI/glDebugMessageCallback">OpenGL
+4.3</a> and in <a
+href="https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml">OpenGL
+ES 3.2</a>.</p>
+<p>In JOGL a user may attached a <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLDebugListener.html">GLDebugListener</a>
+to the <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html">GLContext</a>
+via <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#addGLDebugListener(com.jogamp.opengl.GLDebugListener)">addGLDebugListener(..)</a>.
+The GLDebugListener receives the native <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLDebugMessage.html">GLDebugMessage</a>
+if debugging is enabled.</p>
+<p>To enable debugging, the GLContext must be created having <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#CTX_OPTION_DEBUG">CTX_OPTION_DEBUG</a>
+set via <code>setContextCreationFlags(int)</code> on the <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#setContextCreationFlags(int)">GLContext</a>
+or <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLAutoDrawable.html#setContextCreationFlags(int)">GLAutoDrawable</a>.
+Alternatively, <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#enableGLDebugMessage(boolean)">GLContext.enableGLDebugMessage(boolean</a>
+may be used.</p>
+<p>Test cases</p>
+<ul>
+<li><a
+href="https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLDebug00NEWT.java">TestGLDebug00NEWT</a></li>
+<li><a
+href="https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLDebug01NEWT.java">TestGLDebug01NEWT</a></li>
+</ul>
+<h3 id="retrieve-mapped-buffers-data">Retrieve Mapped Buffer's Data</h3>
+<p>Since OpenGL 1.5, a mapped buffer object's data can be retrieved via
+<a
+href="https://www.khronos.org/opengl/wiki/GLAPI/glGetBufferPointer">glGetBufferPointerv(..)</a>,
+i.e. the client's memory pointer.</p>
+<p>In JOGL, buffers are tracked via <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLBufferStorage.html">GLBufferStorage</a>,
+covering the storage size, NIO client memory reference if mapped and
+usage flags. This ensures lifecycle alignment of the native NIO Java
+client memory with OpenGL buffer semantics.</p>
+<p>To retrieve the bound buffer you may use <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLBase.html#getBoundBuffer(int)">getBoundBuffer(..)</a>
+and <a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLBase.html#getBufferStorage(int)">getBufferStorage(..)</a>.</p>
+<p>Tracker Implementation</p>
+<ul>
+<li><a
+href="https://jogamp.org/cgit/jogl.git/tree/src/jogl/classes/jogamp/opengl/GLBufferObjectTracker.java">GLBufferObjectTracker</a></li>
+<li><a
+href="https://jogamp.org/cgit/jogl.git/tree/src/jogl/classes/jogamp/opengl/GLBufferStateTracker.java">GLBufferStateTracker</a></li>
+</ul>
+<p>Test Cases</p>
+<ul>
+<li><a
+href="https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestMapBufferRead01NEWT.java">TestMapBufferRead01NEWT</a></li>
+<li><a
+href="https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestMapBufferRead02NEWT.java">TestMapBufferRead02NEWT</a></li>
+</ul>
+<h2 id="references">References</h2>
+<ul>
+<li><a href="https://jogamp.org/">JogAmp Home</a></li>
+<li><a href="https://jogamp.org/cgit/jogl.git/about/">JOGL Git
+Repo</a></li>
+<li><a href="https://jogamp.org/jogl/www/">JOGL Home</a></li>
+<li><a
+href="https://jogamp.org/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html">OpenGL
+Evolution &amp; JOGL</a></li>
+<li><a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description">Mapping
+of OpenGL Profiles to Interfaces</a>
+<ul>
+<li><a
+href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#GLAPIInclusionCriteria">OpenGL
+API Inclusion Criteria</a></li>
+<li><a
+href="https://jogamp.org/jogl/doc/uml/html/index-withframe.html">UML
+Diagram</a></li>
+</ul></li>
+<li><a href="https://jogamp.org/jogl/doc/HowToBuild.html">How To
+Build</a></li>
+</ul>
+</body>
+</html>
diff --git a/doc/OpenGL_API_Divergence.md b/doc/OpenGL_API_Divergence.md
new file mode 100644
index 000000000..6cfe2fdd3
--- /dev/null
+++ b/doc/OpenGL_API_Divergence.md
@@ -0,0 +1,61 @@
+<style>
+table, th, td {
+ border: 1px solid black;
+}
+</style>
+
+# JOGL and OpenGL Divergence
+
+## Overview
+As described in [mapping of OpenGL profiles to interfaces](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description), JOGL is mostly API compatible with the OpenGL API while packaging functionality in [OpenGL profiles](https://jogamp.org/jogl/doc/uml/html/index-withframe.html).
+
+However, there are certain aspects where JOGL diverges due to managed code aspects and the Java™ language.
+
+### OpenGL Debugging
+In 2009-2012 the [Debug Output](https://www.khronos.org/opengl/wiki/Debug_Output) extensions
+[AMD_debug_output](http://www.opengl.org/registry/specs/AMD/debug_output.txt) and
+[ARB_debug_output](https://registry.khronos.org/OpenGL/extensions/ARB/ARB_debug_output.txt) were created,
+subsumed to the core via [KHR_debug](https://registry.khronos.org/OpenGL/extensions/KHR/KHR_debug.txt).
+
+They allow applications to [enable and control low-level debugging](https://docs.gl/gl4/glDebugMessageCallback)
+using the OpenGL implementation.
+
+These extensions have been subsumed in [OpenGL 4.3](https://www.khronos.org/opengl/wiki/GLAPI/glDebugMessageCallback)
+and in [OpenGL ES 3.2](https://registry.khronos.org/OpenGL-Refpages/es3/html/glDebugMessageCallback.xhtml).
+
+In JOGL a user may attached a [GLDebugListener](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLDebugListener.html)
+to the [GLContext](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html) via [addGLDebugListener(..)](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#addGLDebugListener\(com.jogamp.opengl.GLDebugListener\)).
+The GLDebugListener receives the native [GLDebugMessage](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLDebugMessage.html) if debugging is enabled.
+
+To enable debugging, the GLContext must be created having [CTX_OPTION_DEBUG](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#CTX_OPTION_DEBUG) set via `setContextCreationFlags(int)` on the [GLContext](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#setContextCreationFlags\(int\)) or [GLAutoDrawable](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLAutoDrawable.html#setContextCreationFlags(int)).
+Alternatively, [GLContext.enableGLDebugMessage(boolean](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLContext.html#enableGLDebugMessage\(boolean\)) may be used.
+
+Test cases
+- [TestGLDebug00NEWT](https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLDebug00NEWT.java)
+- [TestGLDebug01NEWT](https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestGLDebug01NEWT.java)
+
+### Retrieve Mapped Buffer's Data
+Since OpenGL 1.5, a mapped buffer object's data can be retrieved via [glGetBufferPointerv(..)](https://www.khronos.org/opengl/wiki/GLAPI/glGetBufferPointer), i.e. the client's memory pointer.
+
+In JOGL, buffers are tracked via [GLBufferStorage](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLBufferStorage.html), covering the storage size, NIO client memory reference if mapped and usage flags.
+This ensures lifecycle alignment of the native NIO Java client memory with OpenGL buffer semantics.
+
+To retrieve the bound buffer you may use [getBoundBuffer(..)](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLBase.html#getBoundBuffer\(int\)) and [getBufferStorage(..)](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/opengl/GLBase.html#getBufferStorage\(int\)).
+
+Tracker Implementation
+- [GLBufferObjectTracker](https://jogamp.org/cgit/jogl.git/tree/src/jogl/classes/jogamp/opengl/GLBufferObjectTracker.java)
+- [GLBufferStateTracker](https://jogamp.org/cgit/jogl.git/tree/src/jogl/classes/jogamp/opengl/GLBufferStateTracker.java)
+
+Test Cases
+- [TestMapBufferRead01NEWT](https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestMapBufferRead01NEWT.java)
+- [TestMapBufferRead02NEWT](https://jogamp.org/cgit/jogl.git/tree/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestMapBufferRead02NEWT.java)
+
+## References
+- [JogAmp Home](https://jogamp.org/)
+- [JOGL Git Repo](https://jogamp.org/cgit/jogl.git/about/)
+- [JOGL Home](https://jogamp.org/jogl/www/)
+- [OpenGL Evolution & JOGL](https://jogamp.org/jogl/doc/Overview-OpenGL-Evolution-And-JOGL.html)
+- [Mapping of OpenGL Profiles to Interfaces](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description)
+ - [OpenGL API Inclusion Criteria](https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#GLAPIInclusionCriteria)
+ - [UML Diagram](https://jogamp.org/jogl/doc/uml/html/index-withframe.html)
+- [How To Build](https://jogamp.org/jogl/doc/HowToBuild.html)
diff --git a/www/index.html b/www/index.html
index 9a30b75e7..17395e878 100644
--- a/www/index.html
+++ b/www/index.html
@@ -17,7 +17,8 @@
<div id="menu">
<ul>
<li><a href="../../">Home</a></li>
- <li><a href="../../deployment/jogamp-current/jogl-test-applets.html">Tests</a></li>
+ <li><a href="../../cgit/jogl.git/about/">Git</a></li>
+ <!-- li><a href="../../deployment/jogamp-current/jogl-test-applets.html">Tests</a></li -->
<li><a href="../../jogl-demos/www/">Demos</a></li>
<li><a href="../../deployment/jogamp-next/javadoc/jogl/javadoc/">JavaDoc</a></li>
<li><a href="../../gluegen/www/">Gluegen</a></li>
@@ -30,15 +31,18 @@
<div id="sidebar">
<h3>Useful Links</h3>
<ul>
- <li><a href="../../">Builds / Downloads</a></li>
+ <li><a href="../../">Builds</a></li>
+ <li><a href="../../cgit/jogl.git/about/">Git Repo</a></li>
+ <li><a href="../doc/Overview-OpenGL-Evolution-And-JOGL.html">[JO]GL Evolution..</a></li>
+ <li><a href="../../deployment/jogamp-next/javadoc/jogl/javadoc/overview-summary.html#overview_description">OpenGL Profiles</a></li>
+ <li><a href="../doc/Overview-OpenGL-Evolution-And-JOGL.html">[JO]GL Divergence</a></li>
<li><a href="../../deployment/jogamp-next/javadoc/jogl/javadoc/">JavaDoc</a></li>
- <li><a href="../../wiki/index.php/Jogl_Overview">Project Overview</a></li>
- <li><a href="../doc/HowToBuild.html">Building JOGL</a></li>
- <li><a href="../doc/deployment/JOGL-DEPLOYMENT.html">Deploying JOGL</a></li>
+ <li><a href="../../wiki/index.php/Maintainer_and_Contacts">Maintainer</a></li>
+ <!-- li><a href="../../wiki/index.php/Jogl_Overview">Project Overview</a></li -->
+ <!-- li><a href="../doc/deployment/JOGL-DEPLOYMENT.html">Deploying JOGL</a></li -->
<li><a href="../../wiki/index.php/Jogl_Tutorial">Tutorial</a></li>
<li><a href="../doc/userguide/">Userguide</a></li>
<li><a href="../../wiki/index.php/Jogl_FAQ">FAQ</a></li>
- <li><a href="../../git/?p=jogl.git">Code Repository</a></li>
<li><a href="../../git/?p=jogl-demos.git">Demo Repository</a></li>
<li><a href="http://www.khronos.org/registry/"><b>Khronos Registry</b></a></li>
<li><a href="http://www.khronos.org/opengles/sdk/docs/man32/">ES 3.2 Ref Pages</a></li>
@@ -102,6 +106,10 @@
JOGL also provides its own <a href="../doc/NEWT-Overview.html">native windowing toolkit, NEWT</a>, running on top of X11, Windows, MacOS and even on bare-metal console mode without a windowing system.
</p>
<p>
+ JOGL contains <a href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/graph/curve/OutlineShape.html">Graph</a>, <a href="https://jausoft.com/blog/2023/02/22/reimagine-java-on-desktop-bare-metal-devices/">a resolution-independent GPU NURBS curve renderer</a> suitable for desktop and embedded devices and supporting <a href="https://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/com/jogamp/graph/curve/opengl/TextRegionUtil.html">text type rendering</a> [ <a href="https://jogamp.org/doc/gpunurbs2011/p70-santina.pdf">paper</a>, <a href="https://jogamp.org/doc/gpunurbs2011/graphicon2011-slides.pdf">slides</a> ].
+ Graph is used in the contained <a href="https://jausoft.com/blog/tag/graph_type_rendering/">Graph UI, enabling immersive UI within the 3D scene</a>.
+ </p>
+ <p>
<a href="https://jogamp.org/wiki/index.php?title=SW_Tracking_Report_Feature_Objectives_Overview">List of proposed work items &amp; use-cases</a> and <a href="https://jausoft.com/blog/tag/jogamp/">current blog entries</a>.
</p>
<p>