gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 05:36:13 24 4
gpt4 key购买 nike

我正在使用 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 的实现位于 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;
}

关于Java 图像作为 OpenGL 纹理映射的 ByteBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8168466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com