protected void initInThread() { created.set(true); logger.info("OGLESContext create"); logger.log(Level.INFO, "Running on thread: {0}", Thread.currentThread().getName()); // Setup unhandled Exception Handler Thread.currentThread() .setUncaughtExceptionHandler( new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread thread, Throwable thrown) { listener.handleError("Exception thrown in " + thread.toString(), thrown); } }); if (clientOpenGLESVersion < 2) { throw new UnsupportedOperationException("OpenGL ES 2.0 is not supported on this device"); } timer = new AndroidTimer(); renderer = new OGLESShaderRenderer(); renderer.initialize(); listener.initialize(); JmeSystem.setSoftTextDialogInput(this); needClose.set(false); renderable.set(true); }
/** Test method for {@link imuanalyzer.ui.VisualTouchLineStatistics#getStatistics()}. */ @Test public void testGetStatistics() { AssetManager assetManager = JmeSystem.newAssetManager( Thread.currentThread() .getContextClassLoader() .getResource("com/jme3/asset/Desktop.cfg")); Boxplot3d vstat = new Boxplot3d(assetManager); ArrayList<IBoxplotData> stats = new ArrayList<IBoxplotData>(); stats.add( new VectorLineStatistics("Test", Helper.getExampleTouchlineEven(), new ArrayList<Float>())); stats.add( new VectorLineStatistics("Test", Helper.getExampleTouchlineOdd(), new ArrayList<Float>())); vstat.setStatistics(stats); }
private void initOpenCL1() { clContext = context.getOpenCLContext(); Device device = clContext.getDevices().get(0); clQueue = clContext.createQueue(device).register(); // create kernel Program program = null; File tmpFolder = JmeSystem.getStorageFolder(); File binaryFile = new File(tmpFolder, getClass().getSimpleName() + ".clc"); try { // attempt to load cached binary byte[] bytes = Files.readAllBytes(binaryFile.toPath()); ByteBuffer bb = BufferUtils.createByteBuffer(bytes); program = clContext.createProgramFromBinary(bb, device); program.build(); LOG.info("reuse program from cached binaries"); } catch (java.nio.file.NoSuchFileException ex) { // do nothing, cache was not created yet } catch (Exception ex) { LOG.log(Level.INFO, "Unable to use cached program binaries", ex); } if (program == null) { // build from sources String source = "" + "__kernel void ScaleKernel(__global float* vb, float scale)\n" + "{\n" + " int idx = get_global_id(0);\n" + " float3 pos = vload3(idx, vb);\n" + " pos *= scale;\n" + " vstore3(pos, idx, vb);\n" + "}\n"; program = clContext.createProgramFromSourceCode(source); program.build(); // Save binary try { ByteBuffer bb = program.getBinary(device); byte[] bytes = new byte[bb.remaining()]; bb.get(bytes); Files.write(binaryFile.toPath(), bytes); } catch (UnsupportedOperationException | OpenCLException | IOException ex) { LOG.log(Level.SEVERE, "Unable to save program binaries", ex); } LOG.info("create new program from sources"); } program.register(); kernel = program.createKernel("ScaleKernel").register(); }
/** Does LWJGL display initialization in the OpenGL thread */ protected boolean initInThread() { try { if (!JmeSystem.isLowPermissions()) { // Enable uncaught exception handler only for current thread Thread.currentThread() .setUncaughtExceptionHandler( new Thread.UncaughtExceptionHandler() { public void uncaughtException(Thread thread, Throwable thrown) { listener.handleError( "Uncaught exception thrown in " + thread.toString(), thrown); if (needClose.get()) { // listener.handleError() has requested the // context to close. Satisfy request. deinitInThread(); } } }); } // For canvas, this will create a pbuffer, // allowing us to query information. // When the canvas context becomes available, it will // be replaced seamlessly. createContext(settings); printContextInitInfo(); created.set(true); super.internalCreate(); } catch (Exception ex) { try { if (Display.isCreated()) Display.destroy(); } catch (Exception ex2) { logger.log(Level.WARNING, null, ex2); } listener.handleError("Failed to create display", ex); return false; // if we failed to create display, do not continue } listener.initialize(); return true; }
@Override public void start() { // set some default settings in-case // settings dialog is not shown boolean loadSettings = false; if (settings == null) { setSettings(new AppSettings(true)); loadSettings = true; } // show settings dialog if (showSettings) { if (!JmeSystem.showSettingsDialog(settings, loadSettings)) { return; } } // re-setting settings they can have been merged from the registry. setSettings(settings); super.start(); }
public static void main(String[] args) { AssetManager assetManager = JmeSystem.newAssetManager( TestMaterialCompare.class.getResource("/com/jme3/asset/Desktop.cfg")); // Cloned materials Material mat1 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); mat1.setName("mat1"); mat1.setColor("Color", ColorRGBA.Blue); Material mat2 = mat1.clone(); mat2.setName("mat2"); testEquality(mat1, mat2, true); // Cloned material with different render states Material mat3 = mat1.clone(); mat3.setName("mat3"); mat3.getAdditionalRenderState().setBlendMode(BlendMode.ModulateX2); testEquality(mat1, mat3, false); // Two separately loaded materials Material mat4 = assetManager.loadMaterial("Models/Sign Post/Sign Post.j3m"); mat4.setName("mat4"); Material mat5 = assetManager.loadMaterial("Models/Sign Post/Sign Post.j3m"); mat5.setName("mat5"); testEquality(mat4, mat5, true); // Comparing same textures TextureKey originalKey = (TextureKey) mat4.getTextureParam("DiffuseMap").getTextureValue().getKey(); TextureKey tex1key = new TextureKey("Models/Sign Post/Sign Post.jpg", false); tex1key.setGenerateMips(true); // Texture keys from the original and the loaded texture // must be identical, otherwise the resultant textures not identical // and thus materials are not identical! if (!originalKey.equals(tex1key)) { System.out.println("TEXTURE KEYS ARE NOT EQUAL"); } Texture tex1 = assetManager.loadTexture(tex1key); mat4.setTexture("DiffuseMap", tex1); testEquality(mat4, mat5, true); // Change some stuff on the texture and compare, materials no longer equal tex1.setWrap(Texture.WrapMode.MirroredRepeat); testEquality(mat4, mat5, false); // Comparing different textures Texture tex2 = assetManager.loadTexture("Interface/Logo/Monkey.jpg"); mat4.setTexture("DiffuseMap", tex2); testEquality(mat4, mat5, false); // Two materials created the same way Material mat6 = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); mat6.setName("mat6"); mat6.setColor("Color", ColorRGBA.Blue); testEquality(mat1, mat6, true); // Changing a material param mat6.setColor("Color", ColorRGBA.Green); testEquality(mat1, mat6, false); }
/** * Check that we have all we need to run this app * * @param app the app (we need asset managers etc.) * @return true if the app is ok for running! * @throws InterruptedException lots of threads waiting */ private static boolean checkSetup(final Main app) throws InterruptedException { boolean saveSetup = false; // First and foremost, the folder if (!checkDkFolder(dkIIFolder)) { logger.info("Dungeon Keeper II folder not found or valid! Prompting user!"); saveSetup = true; // Let the user select setLookNFeel(); DKFolderSelector frame = new DKFolderSelector() { @Override protected void continueOk(String path) { if (!path.endsWith(File.separator)) { dkIIFolder = path.concat(File.separator); } app.getSettings().putString(DKII_FOLDER_KEY, dkIIFolder); folderOk = true; } }; openFrameAndWait(frame); } else { folderOk = true; } // If the folder is ok, check the conversion if (folderOk && (AssetsConverter.conversionNeeded(app.getSettings()))) { logger.info("Need to convert the assets!"); saveSetup = true; // Convert setLookNFeel(); AssetManager assetManager = JmeSystem.newAssetManager( Thread.currentThread() .getContextClassLoader() .getResource( "com/jme3/asset/Desktop.cfg")); // Get temporary asset manager instance since // we not yet have one ourselves assetManager.registerLocator(AssetsConverter.getAssetsFolder(), FileLocator.class); DKConverter frame = new DKConverter(dkIIFolder, assetManager) { @Override protected void continueOk() { AssetsConverter.setConversionSettings(app.getSettings()); conversionOk = true; } }; openFrameAndWait(frame); } else if (folderOk) { conversionOk = true; } // If everything is ok, we might need to save the setup boolean result = (folderOk && conversionOk); if (result && saveSetup) { try { app.getSettings().save(new FileOutputStream(new File(SETTINGS_FILE))); } catch (IOException ex) { Logger.getLogger(Main.class.getName()) .log(Level.WARNING, "Settings file failed to save!", ex); } } return result; }
public static void main(String[] args) { AssetManager assetManager = JmeSystem.newAssetManager(); assetManager.registerLocator("/", ClasspathLocator.class); assetManager.registerLoader(TextLoader.class, "fnt"); System.out.println(assetManager.loadAsset("Interface/Fonts/Console.fnt")); }