JOGL v2.6.0-rc-20250712
JOGL, High-Performance Graphics Binding for Java™ (public API).
NonFSAAGLCapsChooser.java
Go to the documentation of this file.
1/**
2 * Copyright 2023 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28package com.jogamp.opengl.util.caps;
29
30import java.util.ArrayList;
31import java.util.List;
32
33import com.jogamp.nativewindow.CapabilitiesImmutable;
34import com.jogamp.opengl.DefaultGLCapabilitiesChooser;
35import com.jogamp.opengl.GLCapabilitiesImmutable;
36import com.jogamp.opengl.GLCapabilitiesChooser;
37
38/**
39 * Custom {@link GLCapabilitiesChooser}, filtering out all full screen anti-aliasing (FSAA, multisample) capabilities,
40 * i.e. all matching {@link GLCapabilitiesImmutable} with {@link GLCapabilitiesImmutable#getSampleBuffers()}.
41 */
43 private final boolean verbose;
44 public NonFSAAGLCapsChooser(final boolean verbose) {
45 this.verbose = verbose;
46 }
48 this.verbose = false;
49 }
50
51 @Override
52 public int chooseCapabilities(final CapabilitiesImmutable desired,
53 final List<? extends CapabilitiesImmutable> available,
54 int recommendedIdx) {
55 final GLCapabilitiesImmutable recommended;
56 if( 0 <= recommendedIdx && recommendedIdx < available.size() ) {
57 recommended = (GLCapabilitiesImmutable) available.get(recommendedIdx);
58 } else {
59 recommended = null;
60 recommendedIdx = -1;
61 }
62 final List<GLCapabilitiesImmutable> clean = new ArrayList<GLCapabilitiesImmutable>();
63 for (int i = 0; i < available.size(); i++) {
64 final GLCapabilitiesImmutable caps = (GLCapabilitiesImmutable) available.get(i);
65 if ( caps.getSampleBuffers() ) {
66 /** if( caps.equals(recommended) ) { // the matching index is enough!
67 System.err.println("Dropping["+i+"] "+caps+", matched recommended["+recommendedIdx+"] = "+recommended);
68 recommendedIdx = -1;
69 } else */
70 if( recommendedIdx == i ) {
71 if( verbose ) {
72 System.err.println("Dropping["+i+"] "+caps+", sameidx recommended["+recommendedIdx+"] = "+recommended);
73 }
74 recommendedIdx = -1;
75 } else if( verbose ) {
76 System.err.println("Dropping "+caps+" != recommended["+recommendedIdx+"]");
77 }
78 } else {
79 clean.add(caps);
80 }
81 }
82 return super.chooseCapabilities(desired, clean, recommendedIdx);
83 }
84}
Custom GLCapabilitiesChooser, filtering out all full screen anti-aliasing (FSAA, multisample) capabil...
int chooseCapabilities(final CapabilitiesImmutable desired, final List<? extends CapabilitiesImmutable > available, int recommendedIdx)
Chooses the index (0..available.length - 1) of the Capabilities most closely matching the desired one...
Specifies an immutable set of capabilities that a window's rendering context must support,...
Specifies an immutable set of OpenGL capabilities.
boolean getSampleBuffers()
Returns whether sample buffers for full-scene antialiasing (FSAA) should be allocated for this drawab...