diff --git a/.gitignore b/.gitignore index 49ca1902d..be1334611 100644 --- a/.gitignore +++ b/.gitignore @@ -1,34 +1,22 @@ +**/nbproject/private/ /.gradle/ -/.nb-gradle/private/ -/.nb-gradle/profiles/private/ +/.nb-gradle/ /.idea/ /dist/ /build/ +/bin/ /netbeans/ -/sdk/jdks/local/ -/jme3-core/build/ +/.classpath +/.project +/.settings +*.dll +*.so +*.jnilib +*.dylib +*.iml +.DS_Store /jme3-core/src/main/resources/com/jme3/system/version.properties -/jme3-plugins/build/ -/jme3-desktop/build/ -/jme3-android-native/build/ -/jme3-android/build/ -/jme3-android-examples/build/ -/jme3-blender/build/ -/jme3-effects/build/ -/jme3-bullet/build/ -/jme3-terrain/build/ -/jme3-bullet-native/build/ -/jme3-bullet-native-android/build/ -/jme3-jogg/build/ -/jme3-jbullet/build/ -/jme3-lwjgl/build/ -/jme3-networking/build/ -/jme3-niftygui/build/ -/jme3-testdata/build/ -/jme3-examples/build/ -/jme3-jogl/build/ -/jme3-ios/build/ -/jme3-gl-autogen/build/ +/jme3-*/build/ /jme3-bullet-native/bullet.zip /jme3-bullet-native/bullet-2.82-r2704/ /jme3-android-native/openal-soft/ @@ -38,113 +26,9 @@ /jme3-android-native/src/native/jme_decode/com_jme3_audio_plugins_NativeVorbisFile.h /jme3-android-native/src/native/jme_decode/com_jme3_texture_plugins_AndroidNativeImageLoader.h /jme3-android-native/stb_image.h -/sdk/jme3-tests-template/src/com/jme3/gde/templates/tests/JmeTestsProject.zip -/sdk/jme3-tests-template/src/com/jme3/gde/templates/tests/JME3TestsAndroidProject.zip -/sdk/jme3-project-testdata/release/ -/sdk/JME3TestsTemplateAndroid/src/jme3test/ -/sdk/JME3TestsTemplate/src/jme3test/ -/sdk/build/ -/sdk/jme3-core-baselibs/release/ -/sdk/jme3-core-libraries/release/ -/sdk/jme3-project-baselibs/release/ -/sdk/jme3-project-libraries/release/ -/sdk/jme3-codepalette/build/ -/sdk/jme3-core-libraries/build/ -/sdk/jme3-code-check/build/ -/sdk/jme3-core-baselibs/build/ -/sdk/jme3-documentation/build/ -/sdk/jme3-core-updatecenters/build/ -/sdk/jme3-project-testdata/build/ -/sdk/jme3-project-libraries/build/ -/sdk/jme3-project-baselibs/build/ -/sdk/jme3-templates/build/ -/sdk/jme3-texture-editor/build/ -/sdk/jme3-tests-template/build/ -/sdk/jme3-upgrader/build/ -/sdk/jme3-core/build/ -/sdk/jme3-obfuscate/build/ -/sdk/jme3-gui/build/ -/sdk/jme3-cinematics/build/ -/sdk/jme3-terrain-editor/build/ -/sdk/jme3-lwjgl-applet/build/ -/sdk/jme3-blender/build/ -/sdk/jme3-navmesh-gen/build/ -/sdk/jme3-angelfont/build/ -/sdk/jme3-materialeditor/build/ -/sdk/jme3-android/build/ -/sdk/jme3-desktop-executables/build/ -/sdk/jme3-ogrexml/build/ -/sdk/jme3-ogretools/build/ -/sdk/jme3-scenecomposer/build/ -/sdk/jme3-assetpack-support/build/ -/sdk/jme3-model-importer/build/ -/sdk/jme3-wavefront/build/ -/sdk/jme3-vehicle-creator/build/ -/sdk/jme3-welcome-screen/build/ -/sdk/jme3-glsl-support/build/ -/sdk/jme3-dark-laf/build/ -/sdk/nbproject/private/ -/sdk/jme3-scenecomposer/nbproject/private/ -/sdk/jme3-core/nbproject/private/ -/sdk/jme3-core-baselibs/nbproject/private/ -/sdk/jme3-welcome-screen/nbproject/private/ -/sdk/jme3-lwjgl-applet/nbproject/private/ -/sdk/jme3-ogrexml/nbproject/private/ -/sdk/jme3-upgrader/nbproject/private/ -/sdk/jme3-obfuscate/nbproject/private/ -/sdk/jme3-navmesh-gen/nbproject/private/ -/sdk/jme3-wavefront/nbproject/private/ -/sdk/jme3-project-libraries/nbproject/private/ -/sdk/jme3-ogretools/nbproject/private/ -/sdk/jme3-assetpack-support/nbproject/private/ -/sdk/jme3-cinematics/nbproject/private/ -/sdk/jme3-model-importer/nbproject/private/ -/sdk/jme3-desktop-executables/nbproject/private/ -/sdk/jme3-glsl-support/nbproject/private/ -/sdk/jme3-android/nbproject/private/ -/sdk/jme3-angelfont/nbproject/private/ -/sdk/jme3-codepalette/nbproject/private/ -/sdk/jme3-documentation/nbproject/private/ -/sdk/jme3-vehicle-creator/nbproject/private/ -/sdk/jme3-code-check/nbproject/private/ -/sdk/jme3-blender/nbproject/private/ -/sdk/jme3-core-libraries/nbproject/private/ -/sdk/jme3-core-updatecenters/nbproject/private/ -/sdk/jme3-gui/nbproject/private/ -/sdk/jme3-materialeditor/nbproject/private/ -/sdk/jme3-project-baselibs/nbproject/private/ -/sdk/jme3-project-testdata/nbproject/private/ -/sdk/jme3-templates/nbproject/private/ -/sdk/jme3-terrain-editor/nbproject/private/ -/sdk/jme3-tests-template/nbproject/private/ -/sdk/jme3-texture-editor/nbproject/private/ -/sdk/JME3TestsTemplate/nbproject/private/ -/sdk/JME3TestsTemplateAndroid/nbproject/private/ -/bin -/.classpath -/.project -/.settings -*.dll -*.so -*.jnilib -*.dylib -*.iml -.DS_Store -/sdk/dist/ !/jme3-bullet-native/libs/native/windows/x86_64/bulletjme.dll !/jme3-bullet-native/libs/native/windows/x86/bulletjme.dll !/jme3-bullet-native/libs/native/osx/x86/libbulletjme.dylib !/jme3-bullet-native/libs/native/osx/x86_64/libbulletjme.dylib !/jme3-bullet-native/libs/native/linux/x86/libbulletjme.so !/jme3-bullet-native/libs/native/linux/x86_64/libbulletjme.so -/.nb-gradle/ -/sdk/ant-jme/nbproject/private/ -/sdk/nbi/stub/ext/engine/nbproject/private/ -/sdk/nbi/stub/ext/components/products/jdk/nbproject/private/ -/sdk/nbi/stub/ext/components/products/blender/nbproject/private/ -/sdk/nbi/stub/ext/components/products/helloworld/nbproject/private/ -/sdk/BasicGameTemplate/nbproject/private/ -/sdk/nbi/stub/ext/components/products/jdk/build/ -/sdk/nbi/stub/ext/components/products/jdk/dist/ -/sdk/jme3-dark-laf/nbproject/private/ -jme3-lwjgl3/build/ diff --git a/jme3-core/src/main/java/com/jme3/material/RenderState.java b/jme3-core/src/main/java/com/jme3/material/RenderState.java index 94cae3f50..7ff4a992a 100644 --- a/jme3-core/src/main/java/com/jme3/material/RenderState.java +++ b/jme3-core/src/main/java/com/jme3/material/RenderState.java @@ -822,6 +822,9 @@ public class RenderState implements Cloneable, Savable { * @param lineWidth the line width. */ public void setLineWidth(float lineWidth) { + if (lineWidth < 1f) { + throw new IllegalArgumentException("lineWidth must be greater than or equal to 1.0"); + } this.lineWidth = lineWidth; this.applyLineWidth = true; cachedHashCode = -1; diff --git a/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java b/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java index d3cb79f82..42afc55b4 100644 --- a/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java +++ b/jme3-core/src/main/java/com/jme3/renderer/RenderManager.java @@ -616,7 +616,9 @@ public class RenderManager { gm.getMaterial().preload(this); Mesh mesh = gm.getMesh(); - if (mesh != null) { + if (mesh != null + && mesh.getVertexCount() != 0 + && mesh.getTriangleCount() != 0) { for (VertexBuffer vb : mesh.getBufferList().getArray()) { if (vb.getData() != null && vb.getUsage() != VertexBuffer.Usage.CpuOnly) { renderer.updateBufferData(vb); @@ -641,8 +643,10 @@ public class RenderManager { *

* In addition to enqueuing the visible geometries, this method * also scenes which cast or receive shadows, by putting them into the - * RenderQueue's {@link RenderQueue#renderShadowQueue(GeometryList, RenderManager, Camera, boolean) shadow queue}. - * Each Spatial which has its {@link Spatial#setShadowMode(com.jme3.renderer.queue.RenderQueue.ShadowMode) shadow mode} + * RenderQueue's + * {@link RenderQueue#addToShadowQueue(com.jme3.scene.Geometry, com.jme3.renderer.queue.RenderQueue.ShadowMode) + * shadow queue}. Each Spatial which has its + * {@link Spatial#setShadowMode(com.jme3.renderer.queue.RenderQueue.ShadowMode) shadow mode} * set to not off, will be put into the appropriate shadow queue, note that * this process does not check for frustum culling on any * {@link ShadowMode#Cast shadow casters}, as they don't have to be @@ -989,7 +993,8 @@ public class RenderManager { * (see {@link #renderTranslucentQueue(com.jme3.renderer.ViewPort) }) *

  • If any objects remained in the render queue, they are removed * from the queue. This is generally objects added to the - * {@link RenderQueue#renderShadowQueue(GeometryList, RenderManager, Camera, boolean) shadow queue} + * {@link RenderQueue#renderShadowQueue(com.jme3.renderer.queue.RenderQueue.ShadowMode, com.jme3.renderer.RenderManager, com.jme3.renderer.Camera, boolean) + * shadow queue} * which were not rendered because of a missing shadow renderer.
  • * * diff --git a/jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java b/jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java index 85d786b7e..c8878be77 100644 --- a/jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java +++ b/jme3-core/src/main/java/com/jme3/renderer/opengl/GLRenderer.java @@ -474,14 +474,13 @@ public final class GLRenderer implements Renderer { }); // Print capabilities (if fine logging is enabled) - if (logger.isLoggable(Level.INFO)) { + if (logger.isLoggable(Level.FINE)) { StringBuilder sb = new StringBuilder(); sb.append("Supported capabilities: \n"); for (Caps cap : caps) { sb.append("\t").append(cap.toString()).append("\n"); } - sb.append("\nHardware limits: \n"); for (Limits limit : Limits.values()) { Integer value = limits.get(limit); @@ -492,7 +491,7 @@ public final class GLRenderer implements Renderer { .append(value).append("\n"); } - logger.log(Level.INFO, sb.toString()); + logger.log(Level.FINE, sb.toString()); } texUtil.initialize(caps); @@ -1536,7 +1535,6 @@ public final class GLRenderer implements Renderer { FrameBuffer.RenderBuffer colorBuf = fb.getColorBuffer(i); updateFrameBufferAttachment(fb, colorBuf); } - FrameBuffer.RenderBuffer depthBuf = fb.getDepthBuffer(); if (depthBuf != null) { updateFrameBufferAttachment(fb, depthBuf); @@ -2568,7 +2566,6 @@ public final class GLRenderer implements Renderer { } } } - public void setVertexAttrib(VertexBuffer vb) { setVertexAttrib(vb, null); } @@ -2619,6 +2616,7 @@ public final class GLRenderer implements Renderer { int vertCount = mesh.getVertexCount(); boolean useInstancing = count > 1 && caps.contains(Caps.MeshInstancing); + if (useInstancing) { glext.glDrawElementsInstancedARB(convertElementMode(mesh.getMode()), indexBuf.getData().limit(), @@ -2717,7 +2715,6 @@ public final class GLRenderer implements Renderer { setVertexAttribVAO(vb, interleavedData); } } - mesh.clearUpdateNeeded(); } @@ -2819,13 +2816,11 @@ public final class GLRenderer implements Renderer { VertexBuffer indices = getIndexBuffer(mesh, lod); clearVertexAttribs(); - if (indices != null) { drawTriangleList(indices, mesh, count); } else { drawTriangleArray(mesh.getMode(), count, mesh.getVertexCount()); } - } public void renderMesh(Mesh mesh, int lod, int count, VertexBuffer[] instanceData) { @@ -2836,9 +2831,8 @@ public final class GLRenderer implements Renderer { if (count > 1 && !caps.contains(Caps.MeshInstancing)) { throw new RendererException("Mesh instancing is not supported by the video hardware"); } - //this is kept for backward compatibility. - if (mesh.getLineWidth() != -1 && context.lineWidth != mesh.getLineWidth()) { + if (mesh.getLineWidth() != 1f && context.lineWidth != mesh.getLineWidth()) { gl.glLineWidth(mesh.getLineWidth()); context.lineWidth = mesh.getLineWidth(); } @@ -2846,9 +2840,7 @@ public final class GLRenderer implements Renderer { if (gl4 != null && mesh.getMode().equals(Mode.Patch)) { gl4.glPatchParameter(mesh.getPatchVertexCount()); } - statistics.onMeshDrawn(mesh, lod, count); - // Here while count is still passed in. Can be removed when/if // the method is collapsed again. -pspeed count = Math.max(mesh.getInstanceCount(), count); diff --git a/jme3-core/src/main/java/com/jme3/scene/Mesh.java b/jme3-core/src/main/java/com/jme3/scene/Mesh.java index e599b5e6b..157de46e7 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Mesh.java +++ b/jme3-core/src/main/java/com/jme3/scene/Mesh.java @@ -171,7 +171,7 @@ public class Mesh extends NativeObject implements Savable, Cloneable, JmeCloneab private IntMap buffers = new IntMap(); private VertexBuffer[] lodLevels; private float pointSize = 1; - private float lineWidth = -1; + private float lineWidth = 1; private transient int vertexArrayID = -1; @@ -578,6 +578,9 @@ public class Mesh extends NativeObject implements Savable, Cloneable, JmeCloneab */ @Deprecated public void setLineWidth(float lineWidth) { + if (lineWidth < 1f) { + throw new IllegalArgumentException("lineWidth must be greater than or equal to 1.0"); + } this.lineWidth = lineWidth; } diff --git a/jme3-core/src/main/java/com/jme3/scene/Node.java b/jme3-core/src/main/java/com/jme3/scene/Node.java index 6212d1343..cdf3e122c 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Node.java +++ b/jme3-core/src/main/java/com/jme3/scene/Node.java @@ -259,7 +259,6 @@ public class Node extends Spatial { if ((refreshFlags & RF_MATPARAM_OVERRIDE) != 0) { updateMatParamOverrides(); } - if ((refreshFlags & RF_TRANSFORM) != 0){ // combine with parent transforms- same for all spatial // subclasses. @@ -450,6 +449,7 @@ public class Node extends Spatial { child.setTransformRefresh(); // lights are also inherited from parent child.setLightListRefresh(); + child.setMatParamOverrideRefresh(); invalidateUpdateList(); diff --git a/jme3-core/src/main/java/com/jme3/scene/Spatial.java b/jme3-core/src/main/java/com/jme3/scene/Spatial.java index 412bb68e6..88ba529e0 100644 --- a/jme3-core/src/main/java/com/jme3/scene/Spatial.java +++ b/jme3-core/src/main/java/com/jme3/scene/Spatial.java @@ -126,6 +126,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab RF_CHILD_LIGHTLIST = 0x08, // some child need geometry update RF_MATPARAM_OVERRIDE = 0x10; + protected CullHint cullHint = CullHint.Inherit; protected BatchHint batchHint = BatchHint.Inherit; /** @@ -137,10 +138,8 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab */ protected LightList localLights; protected transient LightList worldLights; - protected ArrayList localOverrides; protected ArrayList worldOverrides; - /** * This spatial's name. */ @@ -210,7 +209,6 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab localOverrides = new ArrayList(); worldOverrides = new ArrayList(); - refreshFlags |= RF_BOUND; } @@ -285,7 +283,8 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab // Make sure next updateGeometricState() visits this branch // to update lights. Spatial p = parent; - while (p != null) { + while (p != null) { + if ((p.refreshFlags & RF_CHILD_LIGHTLIST) != 0) { // The parent already has this flag, // so must all ancestors. @@ -309,7 +308,6 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab p = p.parent; } } - /** * Indicate that the bounding of this spatial has changed and that * a refresh is required. @@ -643,7 +641,6 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab } localOverrides.clear(); } - /** * Should only be called from updateGeometricState(). * In most cases should not be subclassed. @@ -662,7 +659,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab } /** - * Computes the world transform of this Spatial in the most + * Computes the world transform of this Spatial in the most * efficient manner possible. */ void checkDoTransformUpdate() { @@ -918,6 +915,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab if ((refreshFlags & RF_BOUND) != 0) { updateWorldBound(); } + if ((refreshFlags & RF_MATPARAM_OVERRIDE) != 0) { updateMatParamOverrides(); } @@ -1375,7 +1373,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab // the transforms and stuff get refreshed. clone.setTransformRefresh(); clone.setLightListRefresh(); - clone.setMatParamOverrideRefresh(); + clone.setMatParamOverrideRefresh(); return clone; } @@ -1402,7 +1400,6 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab for (MatParamOverride override : localOverrides) { clone.localOverrides.add((MatParamOverride) override.clone()); } - // No need to force cloned to update. // This node already has the refresh flags // set below so it will have to update anyway. @@ -1480,7 +1477,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab // the transforms and stuff get refreshed. clone.setTransformRefresh(); clone.setLightListRefresh(); - clone.setMatParamOverrideRefresh(); + clone.setMatParamOverrideRefresh(); return clone; } @@ -1633,7 +1630,6 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab localLights = (LightList) ic.readSavable("lights", null); localLights.setOwner(this); - localOverrides = ic.readSavableArrayList("overrides", null); if (localOverrides == null) { localOverrides = new ArrayList<>(); diff --git a/jme3-core/src/main/java/com/jme3/shader/ShaderGenerator.java b/jme3-core/src/main/java/com/jme3/shader/ShaderGenerator.java index 9d231cea8..c7923e7e9 100644 --- a/jme3-core/src/main/java/com/jme3/shader/ShaderGenerator.java +++ b/jme3-core/src/main/java/com/jme3/shader/ShaderGenerator.java @@ -69,11 +69,10 @@ public abstract class ShaderGenerator { protected ShaderGenerator(AssetManager assetManager) { this.assetManager = assetManager; } - public void initialize(TechniqueDef techniqueDef) { this.techniqueDef = techniqueDef; } - + /** * Generate vertex and fragment shaders for the given technique * @@ -123,7 +122,6 @@ public abstract class ShaderGenerator { // Too much code assumes that type is either Vertex or Fragment return null; } - indent = 0; StringBuilder sourceDeclaration = new StringBuilder(); diff --git a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java b/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java index 157dc00ce..07b2ce049 100644 --- a/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java +++ b/jme3-lwjgl/src/main/java/com/jme3/system/lwjgl/LwjglContext.java @@ -29,6 +29,7 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + package com.jme3.system.lwjgl; import com.jme3.input.jinput.JInputJoyInput; @@ -68,7 +69,6 @@ public abstract class LwjglContext implements JmeContext { private static final Logger logger = Logger.getLogger(LwjglContext.class.getName()); protected static final String THREAD_NAME = "jME3 Main"; - protected AtomicBoolean created = new AtomicBoolean(false); protected AtomicBoolean renderable = new AtomicBoolean(false); protected final Object createdLock = new Object(); @@ -112,7 +112,6 @@ public abstract class LwjglContext implements JmeContext { return null; } } - protected int determineMaxSamples(int requestedSamples) { try { // If we already have a valid context, determine samples using current @@ -130,13 +129,11 @@ public abstract class LwjglContext implements JmeContext { } catch (LWJGLException ex) { listener.handleError("Failed to check if display is current", ex); } - if ((Pbuffer.getCapabilities() & Pbuffer.PBUFFER_SUPPORTED) == 0) { // No pbuffer, assume everything is supported. return Integer.MAX_VALUE; } else { Pbuffer pb = null; - // OpenGL2 method: Create pbuffer and query samples // from GL_ARB_framebuffer_object or GL_EXT_framebuffer_multisample. try { @@ -161,7 +158,6 @@ public abstract class LwjglContext implements JmeContext { } } } - protected void loadNatives() { if (JmeSystem.isLowPermissions()) { return; @@ -179,7 +175,6 @@ public abstract class LwjglContext implements JmeContext { System.setProperty("org.lwjgl.librarypath", extractPath); NativeLibraryLoader.loadNativeLibrary("lwjgl", true, false); } - protected int getNumSamplesToUse() { int samples = 0; if (settings.getSamples() > 1) { @@ -190,7 +185,6 @@ public abstract class LwjglContext implements JmeContext { "Couldn''t satisfy antialiasing samples requirement: x{0}. " + "Video hardware only supports: x{1}", new Object[]{samples, supportedSamples}); - samples = supportedSamples; } } @@ -202,48 +196,43 @@ public abstract class LwjglContext implements JmeContext { throw new RendererException("OpenGL 2.0 or higher is " + "required for jMonkeyEngine"); } - + if (settings.getRenderer().equals(AppSettings.LWJGL_OPENGL2) || settings.getRenderer().equals(AppSettings.LWJGL_OPENGL3)) { GL gl = new LwjglGL(); GLExt glext = new LwjglGLExt(); GLFbo glfbo; - + if (GLContext.getCapabilities().OpenGL30) { glfbo = new LwjglGLFboGL3(); } else { glfbo = new LwjglGLFboEXT(); } - + if (settings.getBoolean("GraphicsDebug")) { gl = new GLDebugDesktop(gl, glext, glfbo); glext = (GLExt) gl; glfbo = (GLFbo) gl; } - if (settings.getBoolean("GraphicsTiming")) { GLTimingState timingState = new GLTimingState(); gl = (GL) GLTiming.createGLTiming(gl, timingState, GL.class, GL2.class, GL3.class, GL4.class); glext = (GLExt) GLTiming.createGLTiming(glext, timingState, GLExt.class); glfbo = (GLFbo) GLTiming.createGLTiming(glfbo, timingState, GLFbo.class); } - if (settings.getBoolean("GraphicsTrace")) { gl = (GL) GLTracer.createDesktopGlTracer(gl, GL.class, GL2.class, GL3.class, GL4.class); glext = (GLExt) GLTracer.createDesktopGlTracer(glext, GLExt.class); glfbo = (GLFbo) GLTracer.createDesktopGlTracer(glfbo, GLFbo.class); } - renderer = new GLRenderer(gl, glext, glfbo); renderer.initialize(); } else { throw new UnsupportedOperationException("Unsupported renderer: " + settings.getRenderer()); } - if (GLContext.getCapabilities().GL_ARB_debug_output && settings.getBoolean("GraphicsDebug")) { ARBDebugOutput.glDebugMessageCallbackARB(new ARBDebugOutputCallback(new LwjglGLDebugOutputHandler())); } - renderer.setMainFrameBufferSrgb(settings.isGammaCorrection()); renderer.setLinearizeSrgbImages(settings.isGammaCorrection()); @@ -270,15 +259,12 @@ public abstract class LwjglContext implements JmeContext { createdLock.notifyAll(); } } - public void internalCreate() { timer = new LwjglTimer(); - synchronized (createdLock) { created.set(true); createdLock.notifyAll(); } - if (renderable.get()) { initContextFirstTime(); } else { @@ -308,7 +294,6 @@ public abstract class LwjglContext implements JmeContext { public boolean isCreated() { return created.get(); } - public boolean isRenderable() { return renderable.get(); }