python opengl 入门

2023-10-27

安装:

pip install pyglet

 入门demo:

import pyglet

window = pyglet.window.Window()

label = pyglet.text.Label('Hello, world',
                          font_name='Times New Roman',
                          font_size=36,
                          x=window.width // 2, y=window.height // 2,
                          anchor_x='center', anchor_y='center')


@window.event
def on_draw():
    window.clear()
    label.draw()


pyglet.app.run()

刚刚开始学习pyglet库的使用~~~~练习一:创建窗口
 

import pyglet as p

#创建pyglet.window.Window实例,使用myWindow变量命来接收(类首字母大写)
#参数对应着窗口的长、宽、标题等等。
myWindow = p.window.Window(500,500,caption="我的窗口!!!!!!!")
#创建pyglet.text.Lable实例,使用label变量名进行接收
#参数对应设置标签上显示的内容,后两个参数显示在窗口的坐标为(250,250)
label=p.text.Label("helloWorld",x=250,y=250)

#使用修饰器@myWindow.event将后面定义的on_draw()方法关联到窗口对象game_win
@myWindow.event
def on_draw():
    #清除窗口中所有内容,窗口默认黑色背景
    myWindow.clear()
    #调用文本标签对象label的draw()方法,在窗口中绘制出文本标签的外观
    label.draw()

if __name__ == '__main__':
    #调用pyglet.app.run()方法让程序进入Pyglet的默认事件循环
    p.app.run()


练习二:简单音乐播放器

import pyglet as p

#指定文件位置(相对位置、绝对位置)
path="xxx.mp3"
#将路径加载
music=p.media.load(path)
music.play()

if __name__ == '__main__':
    p.app.run()



练习三:简单视频播放器

import pyglet as p
from pyglet.media import *
#创建一个窗口
window = p.window.Window(caption="我的python视频播放器")
#创建Player()实例(对象)
player=Player()
#加载资源路径
source = load("xxx.mp4")
#将资源加载入player
player.queue(source)
#player播放
player.play()
#装饰器,将on_draw()关联到窗口
@window.event
def on_draw():
    #清空窗口中内容
    window.clear()
    #开始在窗口中渲染图像
    player.get_texture().blit(20,100)

if __name__ == '__main__':
    #让程序进入pyglet的默认循环事件
    p.app.run()



练习四:鼠标事件

import pyglet as p
#创建窗口实例
Mywindow=p.window.Window(800,800,caption="鼠标事件")

#使用pyglet.resource.image()方法加载图像
plane_img=p.resource.image("plan.png")
#使用pyglet.resource.animation()方法加载动画图像
fish_gif=p.resource.animation("clown-fish.gif")

#使用Sprite类显示图像或动画
plane=p.sprite.Sprite(plane_img)
fish=p.sprite.Sprite(fish_gif)

#给窗口绑定鼠标事件
@Mywindow.event
def on_mouse_motion(x,y,dx,dy):

    #获取鼠标在窗口的位置x,y  给飞机对象设置当前位置x,y  实现飞机跟随数据运动
    plane.x=x
    plane.y=y

#给窗口绑定事件
@Mywindow.event
def on_draw():
    #清空窗口
    Mywindow.clear()

    #绘制飞机和动态的鱼
    plane.draw()
    fish.draw()

#程序运行入口
if __name__ == '__main__':
    p.app.run()

原文链接:https://blog.csdn.net/z7kirictol/article/details/116795231

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

python opengl 入门 的相关文章

  • 从活动顶点数组生成平滑法线

    我正在尝试通过挂钩 OpenGl 调用来破解和修改旧版 opengl 固定管道游戏的多个渲染功能 而我当前的任务是实现着色器照明 我已经创建了一个适当的着色器程序 可以正确照亮大部分对象 但该游戏的地形是在没有提供正常数据的情况下绘制的 游
  • 3D 图形矩阵 4x4 中最后一行的 magic 4 的用途是什么?

    当我阅读有关WebGL的书时 我看到了下一个矩阵描述 有关于书中最后一行的信息 WebGL 初学者指南 初学者指南 Diego Cantor Brandon Jones 神秘的第四排 第四排没有任何特殊之处 意义 元素 m4 m8 m12
  • glGenerateMipmap 是否在 sRGB 纹理的线性空间中执行平均?

    OpenGL 3 3 规范似乎没有要求 mipmap 生成在线性空间中完成 我能找到的只有以下内容 派生的 mipmap 数组的内部格式都与 levelbase 数组和派生数组的维度如下 第 3 8 14 节中描述的要求 的内容 派生数组是
  • libgdx 中帧缓冲区的结果不明确

    我得到以下奇怪的结果帧缓冲区 http libgdx badlogicgames com nightlies docs api com badlogic gdx graphics glutils FrameBuffer htmllibgdx
  • OpenGL 将着色器附加到程序

    有没有办法访问附加到程序的着色器 也就是说 给定一个程序 我可以做类似的事情 vertexShader getVertexShaderFromProgram program 我想在验证我的程序的函数中记录着色器编译状态 但我只保留对程序的引
  • Opengl 非同步/非阻塞地图

    我刚刚找到以下内容OpenGL 规范ARB map buffer range http www opengl org registry specs ARB map buffer range txt 我想知道是否可以使用此扩展进行非阻塞地图调
  • 使用 Opengl 绘制立方体 3D

    我想使用 OpenGL 绘制 3D 立方体这是我的代码如何纠正错误 float ver 8 3 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
  • 哪个对缓存最友好?

    我试图很好地掌握面向数据的设计以及如何在考虑缓存的情况下进行最佳编程 基本上有两种情况我无法完全确定哪个更好以及为什么 是拥有一个对象向量更好 还是拥有对象原子数据的多个向量更好 A 对象向量示例 struct A GLsizei mInd
  • gluPerspective 与 gluOrtho2D

    我查看了 MSDN 上关于这两个函数的文档 但是 我不太明白这两个功能之间的区别 一个是用于设置 3D 相机视图 另一个是用于设置 2D 相机视图 如果能得到解答就太好了 预先感谢您的评论 正交投影基本上是没有透视的 3D 投影 本质上 这
  • 如何将点光源转换为卵形/椭圆形?

    我希望通过具有不同 x 和 y 值的 vec2 半径将当前的圆形光变成椭圆形 有没有办法根据我当前在片段着色器中的代码来做到这一点 uniform struct Light vec4 colour vec3 position vec2 ra
  • OpenGL 着色器不与着色器程序链接

    我正在尝试使用 GLFW GLEW 添加着色器 我收到一个错误 指出着色器已加载 但它们没有有效的对象代码 这是我用于加载着色器的代码 class SHADER public void LoadShaders const char vert
  • OpenGL 与 Eclipse CDT + MinGW + GLEW + GLFW:未定义的参考

    Edit 与此同时 我已经弄清楚了这一点 并在下面写了详细的答案 我刚刚尝试在 Win7 上从 Express 版本的 MSVC 10 切换到 Eclipse CDT 在配置时遇到了以下简单 OpenGL 代码的问题 在 Visual St
  • glBlitFramebuffer 渲染缓冲区和渲染全屏纹理哪个更快?

    哪个更快更高效 使用 OpenGL 纹理作为 CUDA 表面并在四边形上渲染 新样式 使用渲染缓冲区作为 CUDA 表面并使用 glBlitFramebuffer 进行渲染 None
  • NV_path_rendering替代方案[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚观看了 Siggraph 2012 的一个非常令人印象深刻的演示 http nvidia fullviewmedia com sig
  • glut 库中缺少 glutInitContextVersion()

    我正在练习一些 opengl 代码 但是当我想通过以下方式强制 opengl 上下文使用特定版本的 opengl 时glutInitContextVersion 它编译过程失败并给出以下消息 使用未声明的标识符 glutInitContex
  • 使用 C# 截取任何外部应用程序的屏幕截图

    我们有一个 C WPF 应用程序 我们想要在其中截取我们启动的任意应用程序的屏幕截图 即 我们可以引用我们启动的进程 应用程序可能已最小化或位于其他窗口后面 但我们仍然只需要单个应用程序的图像 而不是重叠像素 我知道使用 BitBlt 或的
  • OpenGL - 两个纹理的幂

    OpenGL 使用二次幂纹理 这是因为由于 MipMapping 某些 GPU 只接受 2 的幂纹理 当绘制比实际更大的纹理时 使用这些二次方纹理会导致问题 我想到了一种方法来解决这个问题 即仅在我们使纹理小于实际大小时使用 PO2 比率
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • Opengl 像素完美 2D 绘图

    我正在研究 2d 引擎 它已经工作得很好 但我不断收到像素错误 例如 我的窗口是 960x540 像素 我从 0 0 到 959 0 画一条线 我希望扫描线 0 上的每个像素都会被设置为一种颜色 但事实并非如此 最右边的像素没有被绘制 当我
  • 三角形纹理映射OpenGL

    我正在开发一个使用 Marching Cubes 算法并将数据更改为 3D 模型的项目 现在我想在 OpenGL 中为我的 3D 模型使用纹理映射 我首先尝试了一个简单的示例 它将图片映射到三角形上 这是我的代码 int DrawGLSce

随机推荐

  • jieba如何自行 split 或 join ?

    目录 jieba suggest freq 源码 split 关键运行过程解释 注意 使用此函数也有可能分不开 join 关键运行过程解释 jieba add word del word 源码 参考文献 jieba suggest freq
  • 联想拯救者R720 - i5-7300HQ/1050ti(macOS Big Sur/Windows) 双系统在 OpenCore (6.0.3)/ OCC (2.5.0)引导下的安装过程

    前言 重要 硬件列表 拯救者R720 处理器 型号 i5 7300HQ 架构 kaby lake 显卡 核显 UHD630 独显无效 忽略 主板 系列 100 Series 网卡 型号自选自购 不做陈列 声卡 批次不同 型号不同 不做陈列
  • [Unity好插件之PlayMaker]PlayMaker如何扩展额外创建更多的脚本

    学习目标 如果你正在学习使用PlayMaker的话 那么本篇文章将非常的适用 关于如何连线则是你自己的想法 本篇侧重于扩展适用更多的PlayMaker行为Action 那么什么是PlayMaker行为Action呢 就是这个列表 当我们要给
  • js echarts 固定颜色按顺序组合 或者随机生成颜色

    在使用echarts的时候或者大转盘的时候 数据量总是很多 但是颜色可以随机生成 也可以使用自己固定的颜色 这边我就分享了一下几种按照顺序组成颜色的代码 第一种 通过循环颜色 用一个splice 删一个 如果颜色没有了 再重新给他原来的数组
  • 常用事务代码(转)

    Pfcg 绝色维护 Su53 查看权限对象 st01 跟踪 St22 看dump 以分析错误 eg 找到ABAP程序出错的地方 找出founction 用se37查看找到的founction 找到有关权限检查 authority check
  • scscanner:一款功能强大的大规模状态码扫描工具

    关于scscanner scscanner是一款功能强大的大规模状态码扫描工具 该工具可以帮助广大研究人员从一个URL列表文件中批量读取目标网站的状态码响应信息 除此之外 该工具还可以过滤出指定的状态码 并将结果存储到一个文件中以供后续深入
  • neon常用指令(updating)

    函数参考手册 https developer arm com architectures instruction sets simd isas neon intrinsics 并在左侧选择neon Neon 128bit寄存器 所以可支持并
  • mysql将一张表插入到另一张表

    1 表1和表2的字段完全相同且要把表2所有的数据都插入到表1 可以用这种方法 insert into table1 select from table2 2 但是更多的时候我们只希望导入指定字段 可以用这种方法 insert into ta
  • 冯思远:Apache TVM 与机器学习编译发展

    下午好 欢迎大家今天来参加 2023 Meet TVM 作为 Apache TVM PMC 由我来给大家做关于 TVM 的发展以及 TVM 未来 Unity 框架的分享 Apache TVM Evolution 首先为什么会有 MLC Ma
  • 双指针算法模板及例题

    双指针算法时间复杂度O n 一般双指针算法运用于有序的某一个或两个序列中 从O n2 优化到O n 算法模板 for int i 0 j 0 i lt n i while j lt i check i j j 具体问题的逻辑 常见问题分类
  • stm32 mpu6050 cubemx 卡尔曼滤波法读取角度

    文章目录 前言 一 cubemx配置 二 mpu6050文件移植 mpu6050 c mpu6050 h 三 主函数 前言 本文简述使用mpu6050读取原始数据后解算出角度 网上大多都是dmp库来解算 但是这种情况操作起来相对复杂 更方便
  • electron入门案例

    目录解构 main js 主进程文件 用来控制整个应用程序 仅有一个 index html 渲染模板 render index js 渲染进程文件 用来控制页面的渲染 可有多个 package json 依赖包 主进程代码 在electro
  • 四. ZooKeeper 作为 SpringCloud 注册中心配置

    目录 一 简单概述 二 配置服务注册到 ZooKeeper 1 服务提供方 yml 文件配置注册到 ZooKeeper 2 服务消费方 yml 文件配置注册到 ZooKeeper 3 服务消费方配置 RestTemplate 注入到容器中
  • 【JAVA】我们常常谈到的方法是指什么?

    个人主页 个人主页 系列专栏 初识JAVA 文章目录 前言 方法 方法的分类 方法的定义 方法调用 方法重载 前言 在之前的文章中我们总是会介绍到类中的各式各样的方法 也许在应用中我们对它已经有了初步的了解 今天我们就来详细的介绍一下 方法
  • 经典卷积神经网络(CNN)图像分类算法详解

    本文原创 转载请引用 https blog csdn net dan teng article details 87192430 CNN图像分类网络 一点废话 CNN网络主要特点是使用卷积层 这其实是模拟了人的视觉神经 单个神经元只能对某种
  • QT获取一些机器相关信息的方法

    获取机器码的方法 按照注释传入相应的参数 即可获得对应的码 获取cpu名称 wmic cpu get Name 获取cpu核心数 wmic cpu get NumberOfCores 获取cpu线程数 wmic cpu get Number
  • 手把手教你对接快手小店开发者商家应用

    不懂就问 什么是快手小店 A 快手小店是快手电商于2018年6月推出的 后续以京东作为供应链 在短视频 直播中打开电商的新纪元 与其可以同态竞技的有抖音小店 以及淘宝直播 那么 要对接快手小店的接口 就需要申请快手开发者 在开发者账户内新建
  • 【Vue入门】语法 —— 插值、指令、过滤器、计算属性、监听器

    目录 一 模版语法 1 1 插值 1 1 1 文本 1 1 2 html解析 1 1 3 属性 1 1 4 表达式 1 2 指令 1 2 1 核心指令 1 2 3 动态参数 二 过滤器 2 1 局部过滤器 2 2 全局过滤器 三 计算属性
  • CRC 校验计算

    一 简介 CRC即循环冗余校验码 Cyclic Redundancy Check 是数据通信领域中最常用的一种查错校验码 其特征是信息字段和校验字段的长度可以任意选定 其根本思想就是先在要发送的帧后面附加校验码 再发送给接收端 校验码要使所
  • python opengl 入门

    安装 pip install pyglet 入门demo import pyglet window pyglet window Window label pyglet text Label Hello world font name Tim