我试图通过读取对象旁边像素的像素颜色来进行碰撞,但我对如何实现这一点感到困惑。
我读过关于glreadpixels
,但我不太了解参数,尤其是最后一个,它应该是 type ByteBuffer
。谁能向我解释我该如何做到这一点,或者可能是一种更好的方法来进行简单的碰撞检测?
我试图通过读取对象旁边像素的像素颜色来进行碰撞,但我对如何实现这一点感到困惑。
我读过关于glreadpixels
,但我不太了解参数,尤其是最后一个,它应该是 type ByteBuffer
。谁能向我解释我该如何做到这一点,或者可能是一种更好的方法来进行简单的碰撞检测?
这绝对不是进行碰撞检测的最简单或最有效的方法,但要回答您的问题;
ByteBuffer RGB = ByteBuffer.allocateDirect(3); //create a new byte buffer (r, g, b)
int x=1, y=1;
GL11.glReadPixels(x, y, //the x and y of the pixel you want the colour of
1, 1, //height, width of selection. 1 since you only want one pixel
GL11.GL_RGB, //format method uses, get red green and blue
GL11.GL_UNSIGNED_BYTE, //how the method is performed; using unsigned bytes
RGB); //the byte buffer to write to
float red, green, blue;
red = RGB.get(0)/255f, //get the first byte
green = RGB.get(1)/255f, //the second
blue = RGB.get(2)/255f; //and third
要获得进行碰撞检测的最佳方法,请快速搜索:2D 中的基本碰撞检测 - 第 1 部分。
它看起来非常有用。