gpt4 book ai didi

python - 如何让 VBO 与 Python 和 PyOpenGL 一起工作

转载 作者:太空狗 更新时间:2023-10-29 20:59:15 34 4
gpt4 key购买 nike

下面的 Python 程序应该在窗口的右上象限中绘制一个白色三角形。

import pygame
from OpenGL.GL import *
from ctypes import *

pygame.init ()
screen = pygame.display.set_mode ((800,600), pygame.OPENGL|pygame.DOUBLEBUF, 24)
glViewport (0, 0, 800, 600)
glClearColor (0.0, 0.5, 0.5, 1.0)
glEnableClientState (GL_VERTEX_ARRAY)

vertices = [ 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0 ]
vbo = glGenBuffers (1)
glBindBuffer (GL_ARRAY_BUFFER, vbo)
glBufferData (GL_ARRAY_BUFFER, len(vertices)*4, (c_float*len(vertices))(*vertices), GL_STATIC_DRAW)

running = True
while running:

for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

glClear (GL_COLOR_BUFFER_BIT)

glBindBuffer (GL_ARRAY_BUFFER, vbo)
glVertexPointer (3, GL_FLOAT, 0, 0)

glDrawArrays (GL_TRIANGLES, 0, 3)

pygame.display.flip ()

它不会抛出任何错误,但不幸的是它没有绘制三角形。

我还尝试将缓冲区数据作为 NumPy 数组提交:

glBufferData (GL_ARRAY_BUFFER, len(vertices)*4, np.array (vertices, dtype="float32"), GL_STATIC_DRAW)

也没有绘制三角形。 PyOpenGL ...你不会画 VBO 吗?

我的系统:Python 2.7.3; OpenGL 4.2.0 ; Linux Mint 玛雅 64 位

最佳答案

好的,我刚找到它:

glVertexPointer 调用的第 4 个参数必须是 None 代表一个 NULL 指针

glVertexPointer (3, GL_FLOAT, 0, None)

我发誓,我昨晚搜索了几个小时,但没看到。

关于python - 如何让 VBO 与 Python 和 PyOpenGL 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13179565/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com