如何让 VBO 使用 Python 和 PyOpenGL

2023-11-23

以下 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 位


好吧,我刚刚找到了:

第 4 个参数glVertexPointer呼叫必须是None代表 NULL 指针

glVertexPointer (3, GL_FLOAT, 0, None)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 VBO 使用 Python 和 PyOpenGL 的相关文章

随机推荐

  • 如何在 QWidget 周围添加边框?

    我在用PyQT4为潜在客户创建示例应用程序 我正在寻找某种方法来在特定小部件周围放置边框 请给我一些寻找的指示 更新 class CentralWidget QtGui QWidget def init self mainWindow su
  • 如何获取android中所有非系统应用程序的列表

    我正在开发一个应用程序 我想在其中获取所有非系统应用程序的列表 这是我的代码部分 TextView tv new TextView this this setContentView tv ActivityManager actvityMan
  • 在 ARM 上的 Linux 中写入和读取内存映射设备寄存器

    我正在尝试按照以下步骤读取和写入 ARM9 SAM9X25 上的寄存器 http infocenter arm com help index jsp topic com arm doc faqs ka3750 html我以以下代码结束 in
  • 在代理上启用 ssl 后,服务器发送的事件停止工作

    我在他面前做了一个基于Tomcat和Nginx的Web项目 必须努力工作才能使其无错误地运行 但是 当我将 ssl 添加到 nginx 时 停止工作的服务器发送事件 如果我直接访问后端服务器 它可以工作 所以 nginx 的某个地方有问题
  • 返回 `p->first` 和 `p->second` 的 C++ 函数对象

    是否有一个内置函数对象返回p gt first and p gt second 这样我就可以愉快地写作了 transform m begin m end back inserter keys get first transform m be
  • 在android中使用OpenCV进行人脸识别?

    我能够使用 open cv 检测人脸 但我不知道如何处理人脸识别 我用谷歌搜索了很多 但没有找到任何可以指导我的文章或博客 有人可以帮我在android上开发人脸识别应用程序吗 您始终可以使用 JavaCV 它是本机 OpenCV 函数的一
  • 如何在Matlab中定义结构体

    我知道结构可以通过多种方式定义 例如 向变量添加字段 p color red 2 p color green 4 p color blue 7 通过赋值定义标量结构 S struct a 0 b 1 c 2 我想要做的是创建一个结构定义 如
  • 使用 Expression[] 调用 (params object[])

    我正在尝试从 Linq Expression 树中调用 String Format 这是一个简单的例子 var format Expression Constant 0 1 var company Expression Property i
  • MySQL 错误 1093 - 无法在 FROM 子句中指定更新的目标表

    我有一张桌子story category在我的数据库中 条目已损坏 下一个查询返回损坏的条目 SELECT FROM story category WHERE category id NOT IN SELECT DISTINCT categ
  • 在 matplotlib 标签中添加下标文本

    这是我的第一个问题 我是 python 菜鸟 所以可能还会有更多后续 我想用 matplotlib 创建一个图形 在标签中 我想包含一个化学式 其中涉及下标 我认为同样适用于上标 无论如何 我不知道标签应该是什么样子 import nump
  • 从烧瓶中的 before_request() 返回

    我是 Flask 的新手 目前正在将现有的 WSGI 应用程序转换为通过 Flask 运行 从长远来看 这会让生活变得更轻松 所有请求都 POST 到特定路由 但是当前应用程序在执行路由之前检查发布数据 以查看是否需要运行请求 即发布数据中
  • 图像的亮度和模糊度之间的关系

    我想知道是否有人可以解释亮度 或强度 和图像模糊度之间的关系 我想使用强度作为参数对模糊图像进行过滤排名 检查频域中的强度级别 对图像进行 FFT 如果频率高 图像就不会模糊 如果所有强度都处于低频 则图像会模糊 或者 计算图像的拉普拉斯梯
  • “登录超时”设置和功能的原因是什么?

    如果应用程序将用户重定向到 Keycloak 登录页面 并且该页面停留的时间超过 登录超时 默认 5 分钟 那么当用户输入用户名和密码 而不是登录 时 她会看到以下内容 您登录的时间太长 登录过程从头开始 为了避免这种情况 可以将 领域设置
  • 无法在QT编辑器中创建调试引擎

    我最近安装了基于 Qt 5 12 0 的 Qt Creator 4 8 0 并对其进行了如下图所示的配置 但是 我还没有成功启动调试器 可以看出 调试器已针对我现在正在使用的该套件正确设置 有什么解决办法吗 Thanks 哇 我找到了 在
  • 如何在 Visual Studio 中将 C++ 代码移植到 C++/CLI?

    我有一个用本机 C 编写的应用程序 我想在 NET 虚拟机上运行它 我正在考虑使用 Visual Studio 2008 编译器将 C 代码重新编译为 C CLI 遗憾的是 我没有找到任何有关如何执行此操作的文档 因此我的问题是 这实际上有
  • Android 使用 Zxing 生成二维码和条形码

    使用zxing生成二维码的代码是 它需要字符串数据和imageview这很好用 private void generateQRCode general String data ImageView img throws WriterExcep
  • 将 RGB 颜色值转换为十进制

    如何将 RGB 颜色值转换为纯十进制 所以我有 RGB 255 255 255 是白色其十进制等效值为 16777215 我试过认为这可能只是 var dec r g b but this doesn t work 虽然那不起作用 有人知道
  • 使用实时数据创建闪亮的应用程序

    我正在尝试创建一个闪亮的应用程序来显示实时收集的数据 为此我正在使用invalidateLater 5000 session 定期更新 R 中的数据 这是我的轮廓server R file library shiny library mag
  • 如何使用 BASIC 身份验证从网站注销用户?

    如果用户使用基本身份验证 是否可以从网站注销用户 杀死会话是不够的 因为一旦用户通过身份验证 每个请求都包含登录信息 因此用户下次使用相同的凭据访问站点时会自动登录 到目前为止唯一的解决方案是关闭浏览器 但从可用性的角度来看这是不可接受的
  • 如何让 VBO 使用 Python 和 PyOpenGL

    以下 Python 程序应在窗口的右上象限绘制一个白色三角形 import pygame from OpenGL GL import from ctypes import pygame init screen pygame display