gpt4 book ai didi

android - 如何在 android 中使用 glreadpixels——通常得到零

转载 作者:搜寻专家 更新时间:2023-11-01 08:13:54 24 4
gpt4 key购买 nike

我正在尝试检测光标下的 opengl 对象...我已阅读它被称为采摘。这是我的代码:

public int makeBuffer(GL10 gl, int x, int y) {

ByteBuffer PixelBuffer = ByteBuffer.allocateDirect(4);
PixelBuffer.order(ByteOrder.nativeOrder());
PixelBuffer.position(0);
int mTemp = 0;
gl.glReadPixels((int)x, (int) y, 1, 1, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, PixelBuffer);
Log.e("Picking", " xy: x" + x + " y"+ y);
byte b [] = new byte[4];
PixelBuffer.get(b);
Log.e("Picking", " rgba: r"+ PixelBuffer.get(0) + " g" + PixelBuffer.get(1) + " b" +
PixelBuffer.get(2) + " a" + PixelBuffer.get(3));
Log.e("Picking", " rgba: r"+ b[0] + " g" + b[1] + " b" +
b[2] + " a" + b[3]);

//mTemp = PixelBuffer.get(0);
mTemp = b[0];

Log.e("Picking", "result:" + mTemp );

return mTemp;
}

看到上面大部分代码都是logcat语句。我的代码打印将 r、g 和 b 归零到屏幕。对于 alpha,它打印 '-1' 这是可翻译为 255(无符号)作为“完整 alpha”。我正在尝试检测屏幕上给定 x/y 位置的颜色。我会很高兴介于 1 和 15 之间的红色值,因为这是应该低于触摸。我希望如果我这样做完全错误我会得到全零,但我必须至少这样做部分正确,因为我正在获得 alpha。我还在其中包含了行我的 list 告诉手机我使用的权限“表面抛物线”和“读取帧缓冲区”。不知道这些有没有线路正常。

<uses-permission
android:name="android.permission.ACCESS_SURFACE_FLINGER" />
<uses-permission android:name="android.permission.READ_FRAME_BUFFER" /

如有任何帮助,我们将不胜感激。

最佳答案

我在 android 上创建 openGL ES 应用程序时也遇到了类似的问题。

到目前为止,我的解决方法是将应用程序从 RGB565 更改为 RGBA8888。在设置渲染器之前插入这些行:

getHolder().setFormat(PixelFormat.RGBA_8888);
setEGLConfigChooser(8, 8, 8, 8, 0, 0);

您必须知道此解决方案仅适用于支持 RGBA8888 的设备。

关于android - 如何在 android 中使用 glreadpixels——通常得到零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6802266/

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