Hi! I'm trying to create cursor from png failed... My code:
private int translate(byte b) {
if (b < 0) {
return 256 + b;
}
return b;
}
// texData format: RGBA, image in left top corner of texture
private IntBuffer formBuffer(Texture tex) {
byte[] pixelData = tex.getTextureData();
IntBuffer ib = IntBuffer.allocate(tex.getImageWidth() * tex.getImageHeight() * 4);
for (int x = 0; x < tex.getImageWidth(); x++)
for (int y = 0; y < tex.getImageHeight(); y++) {
int offset = x + (y * tex.getTextureWidth()) * 4;
ib.put(translate(pixelData[offset + 3])); // A
ib.put(translate(pixelData[offset])); // R
ib.put(translate(pixelData[offset + 1])); // G
ib.put(translate(pixelData[offset + 2])); // B
}
return ib;
}
public void ChangeCursor(String name) {
Texture newCursor = Resource.cursors.get(name);
try {
IntBuffer ib = formBuffer(newCursor);
org.lwjgl.input.Cursor c = new org.lwjgl.input.Cursor(
newCursor.getImageWidth(),
newCursor.getImageHeight(),
0,
0,
1,
ib,
null);
org.lwjgl.input.Mouse.setNativeCursor(c);
} catch (LWJGLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//org.lwjgl.input.Mouse.setNativeCursor(arg0)
}
my image is 22*22, and i have error:
Exception in thread "main" java.lang.IllegalArgumentException: Number of remaini
ng buffer elements is 0, must be at least 484
at org.lwjgl.BufferChecks.throwBufferSizeException(BufferChecks.java:162
)
at org.lwjgl.BufferChecks.checkBufferSize(BufferChecks.java:189)
at org.lwjgl.NondirectBufferWrapper.wrapBuffer(NondirectBufferWrapper.ja
va:111)
at org.lwjgl.input.Cursor.<init>(Cursor.java:89)
Any ideas?