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

python调用opengl_Python之OpenGL笔记(1):窗口工具包GLFW的安装

一、OpenGL简介

OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言、跨平台的编程接口(Application programming interface)的规格,它用于生成二维、三维图像。这个接口由近三百五十个不同的函数调用组成,用来从简单的图元绘制复杂的三维景象。OpenGL常用于CAD、虚拟实境、科学可视化程式和电子游戏开发。

二、Python的OpenGL平台搭建

一)、PyOpenGL的安装(以Python3.6.2版本为例)

1、在网址 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopengl 下载PyOpenGL‑3.1.2‑cp36‑cp36m‑win32.whl

2、拷贝上面文件到python文件夹下,在c:\ python>下运行命令:

pip install PyOpenGL‑3.1.2‑cp36‑cp36m‑win32.whl

二)、Python窗口工具包GLFW的安装

1、下载GLFW。它可以在http://www.glfw.org/download.html 这个网页上下载。

2、将下载的压缩文件glfw-3.2.1.bin.WIN32 .zip解压到我的文件夹内,D:\OpenGL\Glew文件夹\glfw-3.2.1.bin.WIN32 \glfw-3.2.1.bin.WIN32。

3、将GLFW的库文件位置添加到环境变量中的path中。点击“我的电脑”右键选择“属性”,弹出窗口,然后依次点击“高级系统设置”,“高级”,“环境变量”,点击“编辑”,“新建”,将D:\OpenGL\Glew文件夹\glfw-3.2.1.bin.WIN32\glfw-3.2.1.bin.WIN32\lib-vc2015 文件夹添加进去.(注意:此处的目录应该是读者自己下载的GLFW安装目录。其中目录lib-vc2015是库文件所在文件夹)。

4、路径设置完成后,要关闭你的python编译软件然后重新打开,你就可以在python中使用GLFW了。

5、导入glfw。     >>> import glfw

6、查看包帮助。   >>> help(glfw)

7、运行例子程序,因为导入的glfw中的函数名都不带GLFW,所以将simple.py中相应函数都做了对应的修改,运行结果及源程序simple.py如下:

#simple.py

if __name__ == '__main__':

import sys

import glfw

import OpenGL.GL as gl

def on_key(window, key, scancode, action, mods):

if key == glfw.KEY_ESCAPE and action == glfw.PRESS:

glfw.set_window_should_close(window,1)

# Initialize the library

if not glfw.init():

sys.exit()

# Create a windowed mode window and its OpenGL context

window = glfw.create_window(640, 480, "Hello World", None, None)

if not window:

glfw.terminate()

sys.exit()

# Make the window's context current

glfw.make_context_current(window)

# Install a key handler

glfw.set_key_callback(window, on_key)

# Loop until the user closes the window

while not glfw.window_should_close(window):

# Render here

width, height = glfw.get_framebuffer_size(window)

ratio = width / float(height)

gl.glViewport(0, 0, width, height)

gl.glClear(gl.GL_COLOR_BUFFER_BIT)

gl.glMatrixMode(gl.GL_PROJECTION)

gl.glLoadIdentity()

gl.glOrtho(-ratio, ratio, -1, 1, 1, -1)

gl.glMatrixMode(gl.GL_MODELVIEW)

gl.glLoadIdentity()

# gl.glRotatef(glfw.get_time() * 50, 0, 0, 1)

gl.glBegin(gl.GL_TRIANGLES)

gl.glColor3f(1, 0, 0)

gl.glVertex3f(-0.6, -0.4, 0)

gl.glColor3f(0, 1, 0)

gl.glVertex3f(0.6, -0.4, 0)

gl.glColor3f(0, 0, 1)

gl.glVertex3f(0, 0.6, 0)

gl.glEnd()

# Swap front and back buffers

glfw.swap_buffers(window)

# Poll for and process events

glfw.poll_events()

glfw.terminate()

相关文章:

  • 最长有效括号python_leetcode 032中最长有效括号的Python实现,Leetcode032,python
  • 60多套html5移动端模板_扫盲贴:全网最系统、完整的Web前端和移动APP开发知识...
  • python实现端口转发_python实现超简单端口转发的方法
  • x9此计算机上没有hasp_150马力23方货厢,跑快递快运不妨看看陕汽轩德X9蓝牌轻卡...
  • 贝叶斯思维 统计建模的python_《贝叶斯思维:统计建模的Python学习法》--第3章Estimation(估计)介绍...
  • 手机 调起自带地图 java_安卓11系统再加紧封锁!国内第三方手机应用商店或将全部阵亡?...
  • 串口中断和定时器中断_STM32f103单片机(四)——定时器中断
  • 多个参数变更update_PTOSC在线DDL变更工具使用攻略
  • php和python学不明白_现在自学php和python那个合适?
  • 交通流元胞自动机模拟仿真 matlab源码_SLM工艺仿真综述(三)之《金属3D打印仿真的解决方案与思路 . 下篇》...
  • python 菜单按钮打开新窗口_Python Tkinter Menubutton菜单按钮
  • python selenium翻页_Python+Selenium自动化实现分页处理
  • python中不相等符号_python的关系运算符中,用来表示不等于的符号是
  • python 预测分析_如何用Python来预测分析离职率呢
  • mysql big转字符串_mysql的这些坑你踩过吗?快来看看怎么优化mysql
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • Android交互
  • ECS应用管理最佳实践
  • extract-text-webpack-plugin用法
  • IDEA常用插件整理
  • JS 面试题总结
  • Markdown 语法简单说明
  • Odoo domain写法及运用
  • Promise面试题2实现异步串行执行
  • Protobuf3语言指南
  • Redis在Web项目中的应用与实践
  • Shell编程
  • Spring Boot MyBatis配置多种数据库
  • SQLServer之创建数据库快照
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 安装python包到指定虚拟环境
  • 如何在GitHub上创建个人博客
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 网页视频流m3u8/ts视频下载
  • 新手搭建网站的主要流程
  • hi-nginx-1.3.4编译安装
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​你们这样子,耽误我的工作进度怎么办?
  • ###C语言程序设计-----C语言学习(6)#
  • (1)(1.11) SiK Radio v2(一)
  • (39)STM32——FLASH闪存
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)认识微服务
  • (一一四)第九章编程练习
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net 流——流的类型体系简单介绍
  • .NET企业级应用架构设计系列之结尾篇