Ginger3D/src/main/java/com/github/hydos/ginger/engine/opengl/render/tools/IOUtil.java

44 lines
1022 B
Java

package com.github.hydos.ginger.engine.opengl.render.tools;
import static org.lwjgl.BufferUtils.createByteBuffer;
import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.*;
import org.lwjgl.BufferUtils;
public class IOUtil
{
public static ByteBuffer ioResourceToByteBuffer(String resource, int bufferSize) throws IOException
{
ByteBuffer buffer;
try (
InputStream source = IOUtil.class.getResourceAsStream(resource);
ReadableByteChannel rbc = Channels.newChannel(source))
{
buffer = createByteBuffer(bufferSize);
while (true)
{
int bytes = rbc.read(buffer);
if (bytes == -1)
{ break; }
if (buffer.remaining() == 0)
{ buffer = resizeBuffer(buffer, buffer.capacity() * 3 / 2); }
}
}
buffer.flip();
return buffer;
}
private static ByteBuffer resizeBuffer(ByteBuffer buffer, int newCapacity)
{
ByteBuffer newBuffer = BufferUtils.createByteBuffer(newCapacity);
buffer.flip();
newBuffer.put(buffer);
return newBuffer;
}
private IOUtil()
{}
}