PySDL2 LockTexture и изменить пиксели - PullRequest
1 голос
/ 19 января 2020

Я не могу найти ценный пример блокировки текстуры и изменения пикселей в PySDL2

Вот мой код:

def run():
    sdl2.ext.init()
    window = SDL_CreateWindow(b"test" sdl2.SDL_WINDOWPOS_CENTERED, sdl2.SDL_WINDOWPOS_CENTERED, 1024, 768, sdl2.SDL_WINDOW_SHOWN)
    renderer = SDL_CreateRenderer(window, -1, sdl2.SDL_RENDERER_ACCELERATED)
    texture = SDL_CreateTexture(renderer, sdl2.SDL_PIXELFORMAT_RGB888, sdl2.SDL_TEXTUREACCESS_STREAMING, 1024, 768)
    surface = SDL_CreateRGBSurface(0, 128, 128, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000)

    running = True
    while running:
        events = sdl2.ext.get_events()
        for event in events:
            if event.type == sdl2.SDL_QUIT or event.type == sdl2.SDL_MOUSEBUTTONDOWN:
                running = False
                break

        sdl2.SDL_LockTexture(texture, None, ctypes.byref(ctypes.c_void_p(surface.contents.pixels)), ctypes.byref(ctypes.c_int(surface.contents.pitch)))

        #
        # How to change the pixels ???
        # surface.contents.pixels[0][0] = Color(0, 255, 255)


        sdl2.SDL_UnlockTexture(texture)

        # window.refresh()
        sdl2.SDL_RenderPresent(renderer)

    return 0

Как изменить пиксели в surface.contents.pixels?

Спасибо!

...