【问题标题】:gldrawpixels on pyopengl not drawing anything? [duplicate]pyopengl 上的 gldrawpixels 没有画任何东西? [复制]
【发布时间】:2020-01-21 15:21:34
【问题描述】:

我创建像素缓冲区以使用 glDrawPixels 进行绘制。代码运行正常,pygame 窗口出现。但是什么都没有画出来,只显示了一个空白的白色窗口。即使我更改缓冲区的值,它也不会绘制任何东西。

import pygame

from OpenGL.GL import *

#initiliaze pixel buffers
buffer = bytearray(800 * 600 * 3)

for i in range(800 * 600 * 3):
    buffer[i] = 25

def main():
    pygame.init()
    display = (800,600)
    pygame.display.set_mode(display, pygame.DOUBLEBUF| pygame.OPENGL)

    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                quit()

        glClear(GL_COLOR_BUFFER_BIT)
        glDrawPixels(800, 600, GL_RGB, GL_UNSIGNED_BYTE, buffer)
        pygame.time.wait(10)

main()

有什么帮助吗?

【问题讨论】:

    标签: python pygame pixel pyopengl gldrawpixels


    【解决方案1】:

    您错过了通过pygame.display.flip() 更新显示。当显示为OPENGL 显示时,这将执行缓冲区交换:

    import pygame
    from OpenGL.GL import *
    windowsize = (800,600)
    
    # create 800x600 buffer with RED color
    buffer = bytearray(windowsize[0] * windowsize[1] * 3)
    for i in range(windowsize[0] * windowsize[1]):
        buffer[i*3] = 255
        buffer[i*3+1] = 0
        buffer[i*3+2] = 0
    
    def main():
        pygame.init()
    
        # create `OPENGL`, `DOUBLEBUF` display
        pygame.display.set_mode(windowsize, pygame.DOUBLEBUF| pygame.OPENGL)
    
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    pygame.quit()
                    quit()
    
            # set BLACK clear color and clear the color plane
            glClearColor(0, 0, 0, 1)
            glClear(GL_COLOR_BUFFER_BIT)
    
            # draw buffer to dispaly
            glDrawPixels(*windowsize, GL_RGB, GL_UNSIGNED_BYTE, buffer)
    
            # update display
            pygame.display.flip() # <----- swap buffers
    
            pygame.time.wait(10)
    
    main()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多