OpenGL学习笔记——搭建OpenGL程序框架

一、程序及运行效果

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

def drawFunc():
	glClear(GL_COLOR_BUFFER_BIT)
	#glRotatef(1, 0, 1, 0)
	glutWireTeapot(0.5)
	glFlush()

glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(600, 600)
glutCreateWindow("Teapot")
glutDisplayFunc(drawFunc)
#glutIdleFunc(drawFunc)
glutMainLoop()

这个程序绘制了一个犹他茶壶:



二、使用OpenGL

模块导入
使用OpenGL的函数之前导入需要的所有函数

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

函数命名
OpenGL的函数的一般命名规则为:<前缀><根函数><参数数目><参数类型>
举个例子: glColor3f() 表示该函数属于gl库,含有3个参数,参数类型为float指针


初始化窗口
下面6行代码基本上是固定的

glutInit()
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
glutInitWindowSize(600, 600)
glutCreateWindow("Teapot")
glutDisplayFunc(drawFunc)
glutMainLoop()
函数名描述
glutInit()初始化OpenGL
glutInitDisplayMode(Mode)其参数GLUT_RGBA使用(r, g, b)格式,GLUT_SINGLE意味着所有的绘图操作都直接在显示的窗口执行
glutInitWindowSize(400, 400)设置窗口大小
glutInitWindowPosition设置窗口位置
glutCreateWindow(“Teapot”)生成一个窗口,命名为Teapot
glueDisplayFunc(func)参数为一个函数名,用来绘制OpenGL窗口,函数里包含很大OpenGL的绘图指令
glutMainLoop()主循环,调用后OpenGL就一直运行下去

其中,glutInitDisplayMode()还有其他可选的参数:


绘制函数
在drawFunc函数定义中,包含了实际绘图的函数:
glClear(GL_COLOR_BUFFER_BIT):吧先前的画面清除,避免重叠,参数知名要清楚的buffer
glutWireTeapot(0.5):一个glut中绘制犹他茶壶的函数,使用的是线模型
glFlush():刷新屏幕上的更新,处理OpenGL的渲染流水线,让所有排队的指令得到执行


旋转的茶壶:将被注释掉的两行语句取消注释,就可以看到一个旋转的茶壶了



三、OpenGL程序框架

from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *

def init():
	glClearColor(0.0, 0.0, 0.0, 1.0)	# 设置背默认景色为黑色
	glColor3f(1.0, 1.0, 1.0)			# 设置默认绘制颜色为白色
	glMatrixMode(GL_PROJECTION)			# 是否受后续变换函数影响
	glLoadIdentity()					# 初始化为单位矩阵
	gluOrtho2D(-1.0, 1.0, -1.0, 1.0)	# 设置坐标范围


def display():
	glClear(GL_COLOR_BUFFER_BIT)		# 绘制前清屏,防止重叠

	glBegin(GL_MODE)
	GL_Vertex(a, b, c)
	glEnd()

	glFlush()							# 时缓冲区指令得到执行,刷新屏幕


def main():
	glutInit()
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA)
	glutInitWindowSize(500, 500)
	glutInitWindowPosition(200, 100)
	glutCreateWindow("simple")
	glutDisplayFunc(display)
	init()
	glutMainLoop()						# 回调函数

main()


完结 cheers ?
参考:目光博客从零开始pyOpenGL

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值