Я хочу создать оверлей с pygame и opengl. У меня было рабочее решение, просто используя pygame и делая фон прозрачным, используя этот код
hwnd = pygame.display.get_wm_info()["window"]
win32gui.SetWindowLong(hwnd, win32con.GWL_EXSTYLE,
win32gui.GetWindowLong(hwnd, win32con.GWL_EXSTYLE)
| win32con.WS_EX_LAYERED)
win32gui.SetLayeredWindowAttributes(hwnd, win32api.RGB(*fuchsia), 0, win32con.LWA_COLORKEY)
, и в каждом кадре я бы заполнял экран фуксией. Единственная проблема с этим заключается в том, что это действительно медленно. Поэтому я хочу использовать pyopengl, чтобы использовать мой графический процессор.
До сих пор я пытался сделать это
pygame.init()
flags = NOFRAME | DOUBLEBUF | OPENGL
screen = pygame.display.set_mode((1920,1080), flags)
gluOrtho2D(0, 1920, 0, 1080)
glEnable(GL_ALPHA_TEST)
glEnable(GL_DEPTH_TEST)
glEnable(GL_COLOR_MATERIAL)
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
glEnable(GL_BLEND)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glClearColor(0, 0, 0, 0)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
hack_running = False
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
glClearColor(0, 0, 0, 0)
glBegin(GL_LINES)
glVertex2i(0,0)
glVertex2i(500,500)
glEnd()
pygame.display.flip()
pygame.time.wait(10)
В результате получается линия, нарисованная на черном фоне. Есть ли способ убрать фон и превратить окно в оверлей?