Образ Java как ByteBuffer для отображения текстуры OpenGL - PullRequest
1 голос
/ 17 ноября 2011

Я использую openGL и пытаюсь разобраться с наложением текстур.

На данный момент у меня есть следующее, чтобы добавить изображение, которое я буду использовать:

GL11.glBindTexture(GL11.GL_TEXTURE_2D, 1);
GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1);

GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
GL11.glTexParameteri (GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
GL11.glTexParameteri (GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
GL11.glTexParameteri (GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);

GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE);

GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGB, 32, 32, 0, GL11.GL_RGB, GL11.GL_UNSIGNED_BYTE, "imageData");

Где у меня есть строка "imageData" Мне нужен ByteBuffer для моего изображения. Как мне это получить? Изображение находится в моей папке src в Eclipse.

1 Ответ

0 голосов
/ 17 ноября 2011

Это не проверено, но похоже, что оно будет работать

ByteBuffer buffer = ByteBuffer.wrap(getBytesFromFile(filename));

Существует реализация getBytesFromFile в http://www.exampledepot.com/egs/java.io/File2ByteArray.html

РЕДАКТИРОВАТЬ: Хорошо, этот пример действительно исчез, так что вот реализациячтения в ByteBuffer

private static ByteBuffer readToBuffer(String filename) throws IOException
{
    File file = new File(filename);
    ByteBuffer bb = ByteBuffer.allocate((int) file.length());
    FileInputStream fis = new FileInputStream(filename);

    int bytesRead = 0;
    byte[] buf = new byte[BYTES_PER_READ];

    while (bytesRead != -1)
    {
        bb.put(buf, 0, bytesRead);
        bytesRead = fis.read(buf);
    }

    fis.close();

    return bb;
}
...