gpt4 book ai didi

java - OpenGL (LWJGL) - 获取纹理的像素颜色

转载 作者:行者123 更新时间:2023-11-30 08:02:18 25 4
gpt4 key购买 nike

如何获取 RGBA 纹理的像素颜色?假设我有一个这样的函数:

public Color getPixel(int x, int y) {
int r = ...
int g = ...
int b = ...
int a = ...

return new Color(r, g, b, a);
}

我很难使用 glGetTexImage() 来工作;

    int[] p = new int[size.x * size.y * 4];
ByteBuffer buffer = ByteBuffer.allocateDirect(size.x * size.y * 16);
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
buffer.asIntBuffer().get(p);

for (int i = 0; i < p.length; i++) {
p[i] = (int) (p[i] & 0xFF);
}

但我不知道如何访问具有给定坐标的像素。

最佳答案

像这样吗?希望这对您有帮助:)

public Color getPixel(BufferedImage image, int x, int y) {
ByteBuffer buffer = BufferUtils.createByteBuffer(image.getWidth() *
image.getHeight() * 4); //4 for RGBA, 3 for RGB

if (y <= image.getHeight() && x <= image.getWidth()){
int pixel = pixels[y * image.getWidth() + x];
int r=(pixel >> 16) & 0xFF); // Red
int g=(pixel >> 8) & 0xFF); // Green
int b=(pixel & 0xFF); // Blue
int a=(pixel >> 24) & 0xFF); // Alpha
return new Color(r,g,b,a)
}
else{
return new Color(0,0,0,1);
}
}

它不是测试集,但应该可以工作

关于java - OpenGL (LWJGL) - 获取纹理的像素颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31710161/

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