gpt4 book ai didi

java - OpenGL ES glReadPixels 返回错误值

转载 作者:行者123 更新时间:2023-12-01 15:39:39 25 4
gpt4 key购买 nike

首先,第一次来,大家好。在网上搜索了几天(包括这个网站)后,我未能解决这个问题:

public void onDrawFrame(GL10 gl) {

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity(); //load identity
GLU.gluLookAt(gl, 0, -5, -25, 0, 0, 0, 0, 2, 0); //set camera

if (fingerInput.isClicking()){
/* Color Picking 4 START */
gl.glDisable(GL10.GL_TEXTURE_2D); //turn off texturing, lighting and fog
gl.glDisable(GL10.GL_FOG);
gl.glDisable(GL10.GL_LIGHTING);

while (i<squares.size()){ //draw picking colors
squares.get(i).pickingDraw(gl); //note: picking is the same as draw() only with id colors and not textures
i++;
}
i=0;

gl.glReadPixels(fingerInput.getStart().x, screen_height-fingerInput.getStart().y, 1, 1, GL10.GL_RGBA, GL10.GL_UNSIGNED_BYTE, pixels); //read what was the color id pressed, store it in 'pixels' (a 4 slots array buffer)

Log.d("tlog","at coords: ("+(screen_height-fingerInput.getStart().x)+", "+(screen_height-fingerInput.getStart().y)+")");

for (j=0; j<4; j++){
RGBA[j] = (int)(pixels.get(j) & 0xff);
if (RGBA[j] < 0) RGBA[j]+=256; //correcting error caused by java using unsigned bytes and opengl singed bytes
}

无论如何,出于挑选的目的,每个方 block 都用独特的颜色绘制(当前绘制了 3 个方 block ,颜色为 99,96 和 93 红色,蓝绿色 alpha 为 0)glReadPixels 在单击 (99,0,0) 或 (91,0,0) 时返回。

如果盒子是彩色的 (x,0,0,255),它会返回一个值,就好像它有一个可能值的列表,这些值之间有 8 个空格。 (91,99,107..)将每个读取的颜色值“舍入”到最接近的“可能”值。

最佳答案

几个月前我遇到了类似的问题,但我使用 Bitmap 类和 getPixel 方法来读取各个像素的颜色。作为测试,我使用了黑色图像,完全黑色,因此所有像素都应具有值 0,但 getPixel 方法返回值 0,6,0,6 ,0,6...等

如果您查看 Android SDK 的 google 代码页上的此链接,就会发现其他人也遇到了与我相同的问题: Bitmap.getPixel error不幸的是尚未修复。

我不确定这是否与 Android 上的 OpenGL 有关,但根据我的经验,后来的 SDK 版本有时会以某种方式弄乱颜色值。那天唯一有效的是使用较低的 SDK 版本。

在 1.4 或 1.5 上尝试您的代码,如果问题消失,则等待更高版本 SDK 的修复。如果它仍然存在,那么这是另一个问题。

PS:如果您在后续的 SDK 中找到了解决方案,请告诉我。

关于java - OpenGL ES glReadPixels 返回错误值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8277201/

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