Java图像作为OpenGL纹理映射的ByteBuffer

Java图像作为OpenGL纹理映射的ByteBuffer,java,eclipse,opengl,image-processing,bytebuffer,Java,Eclipse,Opengl,Image Processing,Bytebuffer,我正在使用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_TEXTUR

我正在使用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用于我的图像。我怎么得到这个?该图像位于Eclipse中的我的src文件夹中。

这未经测试,但看起来可以正常工作

ByteBuffer buffer = ByteBuffer.wrap(getBytesFromFile(filename));
在上有一个getBytesFromFile的实现

编辑:好吧,这个例子现在真的不存在了,下面是一个读取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;
}

ByteBuffer.allocateDirect(…)页面在链接中找不到。该链接对我有效,无论如何,可以通过搜索“java读取文件为字节”轻松找到该链接。仅当图像是已以opengl喜欢的正确格式编码的原始图像时,该链接才有效。所以像Bmp-Png-Jpg-gif这样的图像是行不通的。这篇文章旨在展示如何根据OP的问题将文件转换成字节数组。我不是说这会将文件转换成OpenGL纹理友好的格式。@jeff问题是“Java图像作为ByteBuffer”。这并没有显示如何将图像加载到bytebuffer中。它展示了如何将文件加载到bytebuffer中,这对于没有解码的图像是无用的。