diff options
author | Sven Gothel <[email protected]> | 2014-09-20 16:06:56 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-09-20 16:06:56 +0200 |
commit | c68e7f9b56f08341ec4977337e3c07384c3782fb (patch) | |
tree | 1d6210686e27e072085a17a74ec1b634b82c6ffb /src/test/com/jogamp/opengl | |
parent | c2cbcf91af97053c4b4683e2d2c5087409edf5c4 (diff) |
FBObject: Fix depth- and stencil bit count selection for attachRenderbuffer(..);
- Fix depth- and stencil bit count selection for attachRenderbuffer(..)
- Add generic values: DEFAULT_BITS, REQUESTED_BITS, CHOSEN_BITS, MAXIMUM_BITS
- Refactor depth- and stencil bit-count -> format into own method
- Allow depth- and stencil bit-count select a higher bit-count if required (fix)
- GLFBODrawable.FBOMODE_USE_DEPTH is deprecated, using GLCapabilities.[get|set]DepthBits(..)
- It was an oversight to introduce the bit flag in the first place,
since we should have used the capabilities depth bit-count
- Graph Test: GLEventListenerButton shall use requested capabilities for FBO drawable.
Diffstat (limited to 'src/test/com/jogamp/opengl')
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/graph/demos/ui/GLEventListenerButton.java | 4 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java | 41 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMRTNEWT01.java | 2 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java | 4 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java | 2 | ||||
-rw-r--r-- | src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/Bug818GLJPanelAndGLCanvasApplet.java (renamed from src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/Bug818GLJPanelApplet.java) | 29 |
6 files changed, 56 insertions, 26 deletions
diff --git a/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/GLEventListenerButton.java b/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/GLEventListenerButton.java index 06d869282..a8cd32035 100644 --- a/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/GLEventListenerButton.java +++ b/src/test/com/jogamp/opengl/test/junit/graph/demos/ui/GLEventListenerButton.java @@ -89,8 +89,8 @@ public class GLEventListenerButton extends TextureSeqButton { final GLContext ctx = gl.getContext(); final GLDrawable drawable = ctx.getGLDrawable(); - final GLCapabilitiesImmutable capsHas = drawable.getChosenGLCapabilities(); - final GLCapabilities caps = (GLCapabilities) capsHas.cloneMutable(); + final GLCapabilitiesImmutable reqCaps = drawable.getRequestedGLCapabilities(); + final GLCapabilities caps = (GLCapabilities) reqCaps.cloneMutable(); caps.setFBO(true); caps.setDoubleBuffered(false); if( !useAlpha ) { diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java index 6bbe00fcb..a46c5a750 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOAutoDrawableFactoryNEWT.java @@ -83,13 +83,14 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { final GLProfile glp = GLProfile.getGL2ES2(); final GLCapabilities caps = new GLCapabilities(glp); caps.setDoubleBuffered(false); - testGLFBODrawableImpl(caps, GLFBODrawable.FBOMODE_USE_DEPTH, new GearsES2(0)); + testGLFBODrawableImpl(caps, 0, new GearsES2(0)); } @Test public void test01c_GL2ES2_Demo1_SingleBuffer_NoTexNoDepth() throws InterruptedException { final GLProfile glp = GLProfile.getGL2ES2(); final GLCapabilities caps = new GLCapabilities(glp); caps.setDoubleBuffered(false); + caps.setDepthBits(0); testGLFBODrawableImpl(caps, 0, new GearsES2(0)); } @@ -115,7 +116,7 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { final GLCapabilities caps = new GLCapabilities(glp); caps.setSampleBuffers(true); caps.setNumSamples(4); - testGLFBODrawableImpl(caps, GLFBODrawable.FBOMODE_USE_DEPTH, new MultisampleDemoES2(true)); + testGLFBODrawableImpl(caps, 0, new MultisampleDemoES2(true)); } @Test public void test03c_GL2ES2_Demo2MSAA4_NoTexNoDepth() throws InterruptedException { @@ -123,6 +124,7 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { final GLCapabilities caps = new GLCapabilities(glp); caps.setSampleBuffers(true); caps.setNumSamples(4); + caps.setDepthBits(0); testGLFBODrawableImpl(caps, 0, new MultisampleDemoES2(true)); } @@ -179,6 +181,7 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { factory.createOffscreenAutoDrawable(null, caps, null, widthStep*szStep, heightStep*szStep); Assert.assertNotNull(glad); + System.out.println("Requested: "+caps); System.out.println("Realized GLAD: "+glad); System.out.println("Realized GLAD: "+glad.getChosenGLCapabilities()); Assert.assertTrue("FBO drawable is initialized before ctx creation", !glad.isInitialized()); @@ -192,8 +195,12 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { } Assert.assertTrue("FBO drawable is not initialized after ctx creation", glad.isInitialized()); - // final boolean useTexture = 0 != ( GLFBODrawable.FBOMODE_USE_TEXTURE & glad.getFBOMode() ); - final boolean useDepth = 0 != ( GLFBODrawable.FBOMODE_USE_DEPTH & glad.getFBOMode() ); + final boolean expDepth = caps.getDepthBits() > 0; + final boolean reqDepth = glad.getRequestedGLCapabilities().getDepthBits() > 0; + final boolean hasDepth = glad.getChosenGLCapabilities().getDepthBits() > 0; + System.out.println("Depth: exp "+expDepth+", req "+reqDepth+", has "+hasDepth); + Assert.assertEquals("Depth: expected not passed to requested", expDepth, reqDepth); + Assert.assertEquals("Depth: requested not passed to chosen", reqDepth, hasDepth); // // FBO incl. MSAA is fully initialized now @@ -230,6 +237,13 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { color1 = null; } + final boolean expTexture = 0 != ( GLFBODrawable.FBOMODE_USE_TEXTURE & glad.getFBOMode() ); + System.out.println("Texture: exp "+expTexture+", hasFront "+color0.isTextureAttachment()); + Assert.assertEquals("Texture: Front", expTexture, color0.isTextureAttachment()); + if(0==glad.getNumSamples()) { + Assert.assertEquals("Texture: Back", expTexture, color1.isTextureAttachment()); + } + final FBObject.Colorbuffer colorA, colorB; final FBObject.RenderAttachment depthA, depthB; @@ -238,7 +252,14 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { colorB = fboBack.getColorbuffer(0); Assert.assertNotNull(colorB); - if( useDepth ) { + Assert.assertEquals("Texture: Front", expTexture, colorA.isTextureAttachment()); + if(0==glad.getNumSamples()) { + Assert.assertEquals("Texture: Back", expTexture, colorB.isTextureAttachment()); + } else { + Assert.assertEquals("Texture: MSAA Back is Texture", false, colorB.isTextureAttachment()); + } + + if( hasDepth ) { depthA = fboFront.getDepthAttachment(); Assert.assertNotNull(depthA); depthB = fboBack.getDepthAttachment(); @@ -254,7 +275,7 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { // double buffer or MSAA Assert.assertNotEquals("Color attachments are equal: "+colorB+" == "+colorA, colorA, colorB); Assert.assertNotSame(colorB, colorA); - if( useDepth ) { + if( hasDepth ) { Assert.assertNotEquals("Depth attachments are equal: "+depthB+" == "+depthA, depthA, depthB); Assert.assertNotSame(depthB, depthA); } @@ -343,14 +364,14 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { FBObject.RenderAttachment _depth = _fboFront.getDepthAttachment(); System.err.println("Resize1.oldDepth "+depthA); System.err.println("Resize1.newDepth "+_depth); - if( useDepth ) { + if( hasDepth ) { Assert.assertNotNull(_depth); } Assert.assertEquals(depthA, _depth); Assert.assertSame(depthA, _depth); _depth = _fboBack.getDepthAttachment(); - if( useDepth ) { + if( hasDepth ) { Assert.assertNotNull(_depth); } Assert.assertEquals(depthB, _depth); @@ -394,14 +415,14 @@ public class TestFBOAutoDrawableFactoryNEWT extends UITestCase { Assert.assertSame(colorB, _color); FBObject.RenderAttachment _depth = fboBack.getDepthAttachment(); - if( useDepth ) { + if( hasDepth ) { Assert.assertNotNull(_depth); // MSAA back w/ depth } Assert.assertEquals(depthB, _depth); Assert.assertSame(depthB, _depth); _depth = fboFront.getDepthAttachment(); - if( useDepth ) { + if( hasDepth ) { Assert.assertNotNull(_depth); } Assert.assertEquals(depthA, _depth); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMRTNEWT01.java b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMRTNEWT01.java index c115f1ea1..a293e2cc6 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMRTNEWT01.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/acore/TestFBOMRTNEWT01.java @@ -176,7 +176,7 @@ public class TestFBOMRTNEWT01 extends UITestCase { texA1 = null; System.err.println("FBO supports only one attachment, no MRT available!"); } - fbo_mrt.attachRenderbuffer(gl, Type.DEPTH, 24); + fbo_mrt.attachRenderbuffer(gl, Type.DEPTH, FBObject.CHOSEN_BITS); Assert.assertTrue( fbo_mrt.isStatusValid() ) ; fbo_mrt.unbind(gl); diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java index d99cba50b..42f4c5f6e 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/FBOMix2DemosES2.java @@ -175,9 +175,9 @@ public class FBOMix2DemosES2 implements GLEventListener { fbo1Tex = fbo1.attachTexture2D(gl, 0, true); } numSamples=fbo0.getNumSamples(); - fbo0.attachRenderbuffer(gl, Type.DEPTH, 24); + fbo0.attachRenderbuffer(gl, Type.DEPTH, FBObject.CHOSEN_BITS); fbo0.unbind(gl); - fbo1.attachRenderbuffer(gl, Type.DEPTH, 24); + fbo1.attachRenderbuffer(gl, Type.DEPTH, FBObject.CHOSEN_BITS); fbo1.unbind(gl); } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java index 066003956..27395ea45 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/TextureDraw02ES2ListenerFBO.java @@ -155,7 +155,7 @@ public class TextureDraw02ES2ListenerFBO implements GLEventListener { fbo0Tex = fbo0.attachTexture2D(gl, 0, true); } numSamples=fbo0.getNumSamples(); - fbo0.attachRenderbuffer(gl, Type.DEPTH, 24); + fbo0.attachRenderbuffer(gl, Type.DEPTH, FBObject.CHOSEN_BITS); fbo0.unbind(gl); } diff --git a/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/Bug818GLJPanelApplet.java b/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/Bug818GLJPanelAndGLCanvasApplet.java index 8280919e6..b6a1c3cee 100644 --- a/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/Bug818GLJPanelApplet.java +++ b/src/test/com/jogamp/opengl/test/junit/jogl/demos/gl2/awt/Bug818GLJPanelAndGLCanvasApplet.java @@ -27,7 +27,9 @@ */
package com.jogamp.opengl.test.junit.jogl.demos.gl2.awt;
+import java.awt.ComponentOrientation;
import java.awt.Dimension;
+import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.InputStream;
@@ -47,6 +49,7 @@ import javax.media.opengl.fixedfunc.GLLightingFunc; import javax.media.opengl.fixedfunc.GLMatrixFunc;
import javax.media.opengl.fixedfunc.GLPointerFunc;
import javax.swing.JApplet;
+import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JFrame;
@@ -57,7 +60,7 @@ import com.jogamp.opengl.util.texture.Texture; import com.jogamp.opengl.util.texture.TextureIO;
/**
- * Bug 818: OSX GLJPanel Crash
+ * Bug 818: OSX GLJPanel [and GLCanvas] Crash
* <pre>
* - NVIDIA GeForce GT 330M
* - GL_VENDOR: "NVIDIA Corporation"
@@ -66,7 +69,7 @@ import com.jogamp.opengl.util.texture.TextureIO; * - Mac OSX 10.6.8
* </pre>
*/
-public class Bug818GLJPanelApplet extends JApplet {
+public class Bug818GLJPanelAndGLCanvasApplet extends JApplet {
private static final long serialVersionUID = 1L;
@@ -81,7 +84,7 @@ public class Bug818GLJPanelApplet extends JApplet { static public void main(final String args[]) {
isApplet = false;
- final JApplet myApplet = new Bug818GLJPanelApplet();
+ final JApplet myApplet = new Bug818GLJPanelAndGLCanvasApplet();
appletHolder = new JPanel();
@@ -115,19 +118,25 @@ public class Bug818GLJPanelApplet extends JApplet { public void init() {
final JPanel panel = new JPanel();
+ panel.setLayout(new GridLayout(2, 2));
+ System.err.println("Pre Orientation L2R: "+panel.getComponentOrientation().isLeftToRight());
+ panel.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
+ System.err.println("Post Orientation L2R: "+panel.getComponentOrientation().isLeftToRight());
setContentPane(panel);
-
- final GLCanvas glCanvas = new GLCanvas();
- glCanvas.addGLEventListener(new JOGLQuad(true));
- animatorCanvas = new Animator(glCanvas);
- glCanvas.setPreferredSize(new Dimension(300, 300));
- panel.add(glCanvas);
+ panel.add(new JLabel("GLJPanel"));
+ panel.add(new JLabel("GLCanvas"));
final GLJPanel gljPanel = new GLJPanel();
gljPanel.addGLEventListener(new JOGLQuad(false));
animatorPanel = new Animator(gljPanel);
gljPanel.setPreferredSize(new Dimension(300, 300));
panel.add(gljPanel);
+
+ final GLCanvas glCanvas = new GLCanvas();
+ glCanvas.addGLEventListener(new JOGLQuad(true));
+ animatorCanvas = new Animator(glCanvas);
+ glCanvas.setPreferredSize(new Dimension(300, 300));
+ panel.add(glCanvas);
}
@Override
@@ -271,7 +280,7 @@ public class Bug818GLJPanelApplet extends JApplet { // set the color of the quad
if (canvas) {
- gl.glColor3f(0.2f, 1.0f, 1.0f);
+ gl.glColor3f(0.2f, 0.2f, 1.0f);
} else {
gl.glColor3f(1.0f, 0.2f, 0.2f);
}
|