当前位置: 首页 > article >正文

如何快速上手ModernGL:10个简单步骤掌握Python 3D图形编程

如何快速上手ModernGL10个简单步骤掌握Python 3D图形编程【免费下载链接】modernglModern OpenGL binding for Python项目地址: https://gitcode.com/gh_mirrors/mo/modernglModernGL是一个强大的Python 3D图形编程库它提供了现代OpenGL的绑定让开发者能够轻松创建高性能的3D图形应用。本文将通过10个简单步骤帮助你快速掌握ModernGL的基础使用开启你的Python 3D图形编程之旅。步骤1安装ModernGLModernGL提供了预构建的wheel包可通过PyPI轻松安装。打开终端执行以下命令pip install moderngl安装完成后你可以通过以下命令验证安装是否成功python -m moderngl如果一切正常你将看到类似以下的输出显示ModernGL版本、显卡信息等moderngl 5.6.0 -------------- vendor: NVIDIA Corporation renderer: GeForce RTX 2080 SUPER/PCIe/SSE2 version: 3.3.0 NVIDIA 441.87 python: 3.7.6 (tags/v3.7.6:43364a7ae0, Dec 19 2019, 00:42:30) [MSC v.1916 64 bit (AMD64)] platform: win32 code: 330步骤2了解ModernGL的核心概念在开始编写代码之前让我们先了解几个ModernGL的核心概念ContextOpenGL上下文是所有OpenGL操作的基础。Program着色器程序由顶点着色器和片段着色器组成。Buffer用于存储顶点数据、索引数据等。VertexArray顶点数组对象将Buffer和Program关联起来。Framebuffer帧缓冲区用于离屏渲染。步骤3创建你的第一个ModernGL程序让我们从一个简单的例子开始创建一个ModernGL上下文并打印相关信息import moderngl # 创建上下文 ctx moderngl.create_standalone_context() # 打印上下文信息 print(ModernGL version:, ctx.version) print(Vendor:, ctx.info[vendor]) print(Renderer:, ctx.info[renderer])运行这段代码你将看到类似步骤1中验证安装时的输出信息。步骤4编写简单的着色器着色器是ModernGL中非常重要的部分它们负责处理图形的渲染。下面是一个简单的顶点着色器和片段着色器顶点着色器 (vertex_shader.glsl)#version 330 core in vec2 in_vert; void main() { gl_Position vec4(in_vert, 0.0, 1.0); }片段着色器 (fragment_shader.glsl)#version 330 core out vec4 f_color; void main() { f_color vec4(0.2, 1.0, 0.2, 1.0); }顶点着色器负责处理顶点位置片段着色器负责处理像素颜色。步骤5创建缓冲区和顶点数组接下来我们需要创建缓冲区来存储顶点数据并创建顶点数组将缓冲区和着色器程序关联起来import moderngl import numpy as np # 创建上下文 ctx moderngl.create_standalone_context() # 顶点数据 vertices np.array([ -0.8, -0.8, 0.8, -0.8, 0.0, 0.8, ], dtypef4) # 创建缓冲区 vbo ctx.buffer(vertices) # 创建着色器程序 prog ctx.program( vertex_shader #version 330 core in vec2 in_vert; void main() { gl_Position vec4(in_vert, 0.0, 1.0); } , fragment_shader #version 330 core out vec4 f_color; void main() { f_color vec4(0.2, 1.0, 0.2, 1.0); } , ) # 创建顶点数组 vao ctx.simple_vertex_array(prog, vbo, in_vert)步骤6执行渲染操作现在我们已经准备好了所有必要的组件可以执行渲染操作了。我们将使用离屏渲染将结果保存到纹理中# 创建帧缓冲区和纹理 fbo ctx.framebuffer( ctx.texture((512, 512), 3), ) # 绑定帧缓冲区 fbo.use() # 清除帧缓冲区 ctx.clear(0.0, 0.0, 0.0, 1.0) # 渲染三角形 vao.render(moderngl.TRIANGLES)步骤7保存渲染结果渲染完成后我们可以将纹理中的数据读取到CPU内存并使用Pillow库保存为图片from PIL import Image # 读取纹理数据 data fbo.texture.read() # 创建图片并保存 img Image.frombytes(RGB, (512, 512), data) img.save(triangle.png)运行这段代码你将得到一个绿色的三角形图片。步骤8使用纹理丰富你的图形ModernGL支持纹理映射可以让你的图形更加丰富多彩。下面是一个使用纹理的例子# 加载纹理图片 img Image.open(examples/data/textures/wood.jpg) texture ctx.texture(img.size, 3, img.tobytes()) # 更新片段着色器使用纹理 prog ctx.program( vertex_shader #version 330 core in vec2 in_vert; in vec2 in_texcoord; out vec2 v_texcoord; void main() { gl_Position vec4(in_vert, 0.0, 1.0); v_texcoord in_texcoord; } , fragment_shader #version 330 core in vec2 v_texcoord; out vec4 f_color; uniform sampler2D texture0; void main() { f_color texture(texture0, v_texcoord); } , ) # 更新顶点数据添加纹理坐标 vertices np.array([ -0.8, -0.8, 0.0, 0.0, 0.8, -0.8, 1.0, 0.0, 0.0, 0.8, 0.5, 1.0, ], dtypef4) # 更新顶点数组 vbo ctx.buffer(vertices) vao ctx.simple_vertex_array(prog, vbo, in_vert, in_texcoord) # 绑定纹理 texture.use() # 渲染 fbo.use() ctx.clear(0.0, 0.0, 0.0, 1.0) vao.render(moderngl.TRIANGLES) # 保存结果 data fbo.texture.read() img Image.frombytes(RGB, (512, 512), data) img.save(textured_triangle.png)步骤9探索更多示例ModernGL提供了丰富的示例代码你可以在项目的examples目录中找到它们。例如examples/01_hello_world.py简单的Hello World示例examples/08_texture.py纹理映射示例examples/10_lighting.py光照效果示例你可以通过以下命令克隆仓库获取所有示例git clone https://gitcode.com/gh_mirrors/mo/moderngl步骤10查阅官方文档要深入学习ModernGL官方文档是你最好的朋友。你可以在docs目录中找到详细的文档例如docs/the_guide/getting_started/index.rst入门指南docs/reference/index.rstAPI参考通过阅读文档你可以了解更多高级特性和最佳实践。通过以上10个步骤你已经掌握了ModernGL的基础使用。现在你可以开始创建自己的3D图形应用了ModernGL的强大功能和简洁API将帮助你轻松实现各种复杂的图形效果。祝你编程愉快【免费下载链接】modernglModern OpenGL binding for Python项目地址: https://gitcode.com/gh_mirrors/mo/moderngl创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

如何快速上手ModernGL:10个简单步骤掌握Python 3D图形编程

如何快速上手ModernGL:10个简单步骤掌握Python 3D图形编程 【免费下载链接】moderngl Modern OpenGL binding for Python 项目地址: https://gitcode.com/gh_mirrors/mo/moderngl ModernGL是一个强大的Python 3D图形编程库,它提供了现代OpenGL的绑…...

Elementary测试框架详解:构建可靠的数据质量监控

Elementary测试框架详解:构建可靠的数据质量监控 【免费下载链接】elementary The dbt-native data observability solution for data & analytics engineers. Monitor your data pipelines in minutes. Available as self-hosted or cloud service with premiu…...

机器学习流水线(Pipeline)原理与实践指南

1. 机器学习流水线基础与核心价值在真实的数据科学项目中,我们常常需要执行一系列数据预处理步骤,然后才能应用机器学习算法。传统做法中,这些步骤往往分散在不同的代码块里,导致几个典型问题:代码重复:训练…...

从零到精通:AI大模型学习路线图,助你月薪30K+!2026年AI大模型学习路线终极指南

本文提供了一套系统的AI大模型学习路线,涵盖数学与编程基础、机器学习入门、深度学习深入、大模型探索以及进阶应用。文章详细介绍了各阶段的理论学习资源(如书籍、在线课程)和实践项目(如Kaggle竞赛、Hugging Face库应用&#xf…...

GPT-5.5降临:OpenAI打造最强智能体,引领AI工作新纪元!

北京时间 4 月 24 日凌晨,OpenAI 突然发布了 GPT-5.5,以及更高规格的 GPT-5.5 Pro。 这不是一次常规的小版本迭代。在 OpenAI 看来,GPT-5.5 不仅是他们最强的模型,更是新的智能模型,即专为真实工作和智能体任务打造的模…...

量子信号处理在量子计算脉冲控制中的应用

1. 量子信号处理框架概述量子信号处理(Quantum Signal Processing, QSP)是一种将连续时间量子动力学映射到离散参数空间的数学框架。这个技术近年来在量子计算领域崭露头角,特别是在超导量子比特和离子阱等物理实现平台上展现出独特的优势。想象一下,你正…...

GPT-5.5横空出世!OpenAI颠覆AI认知,让AI从“聊天机器人”进化为“全能干将”!

2026年4月24日凌晨,OpenAI毫无预兆地扔出了年度王炸——GPT-5.5正式官宣上线。 Sam Altman连发三条推文敲定发布节奏,一句“它聪明又快速,我个人非常喜欢它”,直接让整个AI圈彻底沸腾。 这一次,GPT的升级从来不是“更会…...

如何用声谱分析技术揭秘音频的隐藏密码?

如何用声谱分析技术揭秘音频的隐藏密码? 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 你是否曾好奇一首音乐中不同频段的能量分布?或者想了解录音中的噪声来源?传统的音频播放…...

面阵相机 vs 线阵相机:堡盟与Basler选型差异全解析 +C# 实战演示

面阵相机 vs 线阵相机:堡盟与Basler选型差异全解析 C# 实战演示 面阵 vs 线阵:工业视觉的“广角镜”与“扫描仪”🔍 核心差异:一帧 vs 一行面阵相机 (Area Scan):瞬间的“广角镜”线阵相机 (Line Scan):连续…...

2026年AI编程工具终极横评:Cursor vs Claude Code vs Copilot

2026年4月,AI编程工具进入白热化阶段。Cursor 3、Claude Code、SWE-bench 80.8%登顶——这场战役,普通人该怎么选?一、为什么这件事值得聊船长在数据分析这行干了快10年,见过的工具没有一百也有八十。2025年之前,AI编程…...

fast-grid架构设计:事件循环与任务优先级的巧妙运用

fast-grid架构设计:事件循环与任务优先级的巧妙运用 【免费下载链接】fast-grid Worlds most performant DOM-based web table. Try it! fast-grid.vercel.app/ 项目地址: https://gitcode.com/gh_mirrors/fa/fast-grid fast-grid作为世界上性能最卓越的DOM-…...

从疫苗残留中提取mRNA序列:生物信息学与实验技术的结合实践

1. 项目背景与核心价值作为一名长期在生物信息学和分子诊断领域工作的从业者,我深知在公共卫生事件中,数据的透明度和可及性有多么重要。2020年底,随着两款基于mRNA技术的COVID-19疫苗(辉瑞/BioNTech的BNT-162b2和Moderna的mRNA-1…...

别再盲目升级!CUDA 13.1对Llama-3-70B MoE前向推理影响实测:显存增长19%但吞吐仅+2.3%,何时该踩刹车?

更多请点击: https://intelliparadigm.com 第一章:CUDA 13 编程与 AI 算子优化对比评测报告 CUDA 13 引入了多项底层架构增强,包括统一内存管理器重构、PTX 8.5 指令集扩展以及对 Hopper 架构中 TMA(Tensor Memory Accelerator&a…...

4点法、7点法、8点法、5点法——OpenCV多视图几何四大矩阵求解器源码深度拆解

两张不同角度拍摄的照片,怎么算出来场景的三维结构? 这个问题困扰了计算机视觉研究者三十多年。答案藏在三个矩阵里:单应性矩阵 H、基础矩阵 F、本质矩阵 E。OpenCV 为每一个矩阵都实现了专门的求解算法,它们分别需要 4 个、7 个(或 8 个)、5 个点对应。这些数字不是凭空…...

Qwen3.5-9B-GGUF数据库课程设计助手:从ER图到SQL建表语句

Qwen3.5-9B-GGUF数据库课程设计助手:从ER图到SQL建表语句 1. 为什么需要数据库设计助手 做数据库课程设计时,很多同学都会遇到类似的困扰:明明理解了业务需求,却不知道如何转化为规范的ER图;画好了概念模型&#xff…...

C++编写MCP网关必须规避的9个LLVM ThinLTO链接时错误,否则静态库合并后symbol重排将导致L1d缓存命中率暴跌41.7%

更多请点击: https://intelliparadigm.com 第一章:C编写高吞吐量MCP网关的核心设计原则 构建面向现代微服务通信协议(MCP)的高性能网关,需在C层面直面并发模型、内存生命周期与协议栈优化三重挑战。核心并非堆砌异步I…...

内存泄漏×连接池膨胀×序列化开销:C++ MCP网关三大隐性成本黑洞全解析,附LLVM+eBPF实时监控脚本

更多请点击: https://intelliparadigm.com 第一章:C MCP网关成本控制的底层逻辑与系统观 C MCP(Model-Controller-Protocol)网关并非传统意义上的协议转换中间件,而是一个面向高吞吐、低延迟微服务边界的资源感知型调…...

EvoAgentX演进算法深度解析:TextGrad、AFlow、MIPRO性能对比

EvoAgentX演进算法深度解析:TextGrad、AFlow、MIPRO性能对比 【免费下载链接】EvoAgentX 🚀 EvoAgentX: Building a Self-Evolving Ecosystem of AI Agents 项目地址: https://gitcode.com/gh_mirrors/ev/EvoAgentX EvoAgentX是一个构建自进化AI智…...

Pomotroid:终极免费番茄工作法计时器,如何快速提升专注效率的完整指南

Pomotroid:终极免费番茄工作法计时器,如何快速提升专注效率的完整指南 【免费下载链接】pomotroid :tomato: Simple and visually-pleasing Pomodoro timer 项目地址: https://gitcode.com/gh_mirrors/po/pomotroid 在当今快节奏的工作和学习环境…...

4.25 用户端

1. 路由守卫死锁清除浏览器本地token:这是很多新手容易踩的坑:重启代码服务器,并不会清空浏览器的缓存。你之前成功登录过一次,你的 Token 和 UserInfo 已经被写进了你**浏览器的 localStorage(本地存储)**…...

ml-intern5G应用:AI与5G技术的协同创新

ml-intern5G应用:AI与5G技术的协同创新 【免费下载链接】ml-intern 🤗 ml-intern: an open-source ML engineer that reads papers, trains models, and ships ML models 项目地址: https://gitcode.com/GitHub_Trending/ml/ml-intern ml-intern是…...

终极Divinity Mod Manager完全指南:告别模组混乱,轻松管理《神界:原罪2》模组

终极Divinity Mod Manager完全指南:告别模组混乱,轻松管理《神界:原罪2》模组 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/Divini…...

终极指南:如何优化react-router-redux路由性能——关键渲染路径深度解析

终极指南:如何优化react-router-redux路由性能——关键渲染路径深度解析 【免费下载链接】react-router-redux Ruthlessly simple bindings to keep react-router and redux in sync 项目地址: https://gitcode.com/gh_mirrors/re/react-router-redux react-…...

GPT-5.5震撼发布!编码、科研能力全面飙升,OpenAI引领AI新纪元!

OpenAI于2026年4月23日正式发布了GPT-5.5模型,被誉为“迄今为止最聪明、最直观使用的模型”。GPT-5.5在编码、计算机使用、知识工作和科学研究四个核心领域实现显著升级,同时保持与GPT-5.4相同的推理延迟。该模型能更快理解用户意图,自主承担…...

终极指南:如何为symfony/polyfill-mbstring添加自定义多字节函数

终极指南:如何为symfony/polyfill-mbstring添加自定义多字节函数 【免费下载链接】polyfill-mbstring Symfony polyfill for the Mbstring extension 项目地址: https://gitcode.com/gh_mirrors/po/polyfill-mbstring symfony/polyfill-mbstring是一个强大的…...

OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手

OpenClaw进阶技巧:高效批量修改文件内容与关键词替换在现代数据处理和自动化任务中,批量修改文件内容和替换关键词是提升工作效率的关键技能。OpenClaw作为一款强大的文件处理工具,其进阶技巧能帮助用户解放双手,实现高效操作。本…...

小白转行AI大模型工程师?收藏这份独家学习路线,3个月带你从0到1实操落地!

文章分享作者从计算机小白成功转行AI大模型工程师的经历,指出转行AI大模型的关键在于掌握能落地的技能而非死磕算法公式。作者提供了一套为期三个月的学习路线,包括打牢Python基础、建立大模型认知、掌握Prompt技巧、攻克RAG技术、学习Agent搭建和LangCh…...

别再只盯着IoU了!目标检测中GIoU、DIoU、CIoU损失函数详解与PyTorch实现

目标检测进阶:从IoU到CIoU的损失函数演化与实战实现 当你在训练目标检测模型时,是否遇到过这样的困境:明明调整了学习率和数据增强策略,但边界框回归的精度始终卡在一个瓶颈?问题的根源可能就藏在那个看似简单的IoU&am…...

支付集成终极指南:Alipay Easy SDK让复杂接入成为过去

支付集成终极指南:Alipay Easy SDK让复杂接入成为过去 【免费下载链接】alipay-easysdk Alipay Easy SDK for multi-language(java、c#、php、ts etc.) allows you to enjoy a minimalist programming experience and quickly access the various high-frequency ca…...

从零到精通:Flutter Admin后台管理系统的完整指南

从零到精通:Flutter Admin后台管理系统的完整指南 【免费下载链接】flutter_admin Flutter Admin: 一个基于 Flutter 的后台管理系统、开发模板。A backend management system and development template based on Flutter 项目地址: https://gitcode.com/gh_mirro…...