Android getPixel从位图随机开始返回黑色

Android getPixel从位图随机开始返回黑色,android,bitmap,opengl-es-2.0,getpixel,Android,Bitmap,Opengl Es 2.0,Getpixel,我正在使用opengl es 2.0为android开发一个游戏,我使用高度贴图位图创建地形。这样行 在游戏中,我有代表游戏中实体的类,它们在实例中存储它们的x、y位置。 为了获得z值,我使用了一种查询高度贴图位图的方法 方法如下: public float zAt(float pos[]){ float xPos = pos[0] + terrainWidth/2; float yPos = height-(pos[1] + terrainHeight/2); int

我正在使用opengl es 2.0为android开发一个游戏,我使用高度贴图位图创建地形。这样行

在游戏中,我有代表游戏中实体的类,它们在实例中存储它们的x、y位置。 为了获得z值,我使用了一种查询高度贴图位图的方法

方法如下:

public float zAt(float pos[]){
    float xPos = pos[0] + terrainWidth/2;
    float yPos = height-(pos[1] + terrainHeight/2);

    int bitMapWidth = zMap.getWidth();
    int bitMapHeight = zMap.getHeight();

    int pixelX= (int) (((bitMapWidth-1)  * xPos) / terrainWidth);
    int pixelY = (int) (((bitMapHeight-1) * yPos) / terrainHeight);

    if(pixelX < 0 || pixelX >= bitMapWidth || pixelY < 0 || pixelY >= bitMapHeight)
        return 0;
    else{
        System.out.println("DEBUG! >> "+"("+pixelX+","+pixelY+"):"+zMap.getPixel(pixelX, pixelY)+" <<");
        float toReturn = ((zMap.getPixel(pixelX, pixelY) & 0xFF)-(255f/2f))/zDiv;

        return toReturn;
    }
}

有人知道为什么会发生这种情况吗?

如果像素X或像素Y值大于位图的相应尺寸,则返回0。在进入此代码部分之前,请验证像素X和像素Y值:

if(pixelX < 0 || pixelX >= bitMapWidth || pixelY < 0 || pixelY >= bitMapHeight)
    return 0;

XPO和YPO总是在0到1之间吗?@Mehmet M.I.XPO和YPO不在0到1之间,也不需要在0到1之间。pos[]位于game/opengl坐标中,如您所见,应用了一系列变换,以获得该位置对应像素的坐标。在生成的日志中,可以看到如下内容:DEBUG!>>408300:453213 408300:0在这种情况下是0,是的,但这不是问题,因为这是期望的行为。通过println查看我对mehmet答案的评论可以观察到正在发生的事情,这会自动确保正在运行的是else部分。事实上,相同的像素坐标并不总是有相同的getPixel值,这真的很奇怪。看起来好像有人在程序启动后随机将整个位图涂成黑色。
if(pixelX < 0 || pixelX >= bitMapWidth || pixelY < 0 || pixelY >= bitMapHeight)
    return 0;