/** * Convert the given {@link Shader} into an embedded shader, by replacing * its URI with a data URI, if the URI is not already a data URI * * @param gltfModel The {@link GltfModelV1} * @param id The ID of the {@link Shader} * @param shader The {@link Shader} */ private static void convertShaderToEmbedded( GltfModelV1 gltfModel, String id, Shader shader) { String uriString = shader.getUri(); if (IO.isDataUriString(uriString)) { return; } ShaderModel shaderModel = gltfModel.getShaderModelById(id); ByteBuffer shaderData = shaderModel.getShaderData(); byte data[] = new byte[shaderData.capacity()]; shaderData.slice().get(data); String encodedData = Base64.getEncoder().encodeToString(data); String dataUriString = "data:text/plain;base64," + encodedData; shader.removeExtensions(BinaryGltfV1.getBinaryGltfExtensionName()); shader.setUri(dataUriString); }
shader.removeExtensions(BinaryGltfV1.getBinaryGltfExtensionName());