我正在使用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文件夹中。
答案 0 :(得分:0)
这是未经测试但看起来会起作用
ByteBuffer buffer = ByteBuffer.wrap(getBytesFromFile(filename));
在http://www.exampledepot.com/egs/java.io/File2ByteArray.html
处有一个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;
}