XGetImage를 사용하여 OpenGL 윈도우의 픽셀을 읽습니다. 반환 된 XImage는 24 비트의 깊이를 보여 주지만, OpenGL 컨텍스트에는 반환 할 알파 값이 있습니다. XGetImage에서 32 비트 XImage를 가져 오는 방법이 있습니까? 아니면 X가 이미 이미지를 24 비트로 병합합니까?XGetImage는 32 비트 깊이의 XImage를 반환합니까?
함수 호출 :
::XImage *winImage = XGetImage(dpy_i->dpy, wnd_i->wnd,
x, y, width, height, 0xffffffff, ZPixmap);
GDB 출력 :
(gdb) print *winImage
$2 = {width = 640, height = 512, xoffset = 0, format = 2,
data = 0x7fffe72fd010 "\377\377\377", byte_order = 0,
bitmap_unit = 32, bitmap_bit_order = 0, bitmap_pad = 32,
depth = 24, bytes_per_line = 2560, bits_per_pixel = 32,
red_mask = 16711680, green_mask = 65280, blue_mask = 255,
obdata = 0x0, f = {create_image = 0x7ffff4b67810 <XCreateImage>,
destroy_image = 0x7ffff4b665b0, get_pixel = 0x7ffff4b67520,
put_pixel = 0x7ffff4b67450, sub_image = 0x7ffff4b67170,
add_pixel = 0x7ffff4b66650}}
당신은 아마 32 비트 비주얼을 사용하여 윈도우를 생성 할 필요가있다. 성공적으로 32 비트 깊이의 GetImage 데이터를받을 수 있습니다. 여기에서 만드십시오 - https://github.com/sidorares/node-x11/blob/master/examples/smoketest/transpwindow.js –
안녕하세요 @ AndreySidorov 저는 24 비트를 얻었지만 알파를 얻습니다. 그것에서, 나는 gget BGRA, 제발 아주 내 흥미로운 아래 내 솔루션을 참조하십시오. – Noitidart