不多废话上代码,注释应该很清楚了
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/3/23 16:25 # @Author : Barry # @Site : # @File : learn.py # @Software: PyCharm from OpenGL.GL import * from OpenGL.GLU import * from OpenGL.GLUT import * import sys import numpy as np # 画圆 def circle(x, y, r, n): theta = np.linspace(0, 2*np.pi, n) x = x + r * np.cos(theta) y = y + r * np.sin(theta) return x, y def plotfunc(): glClear(GL_COLOR_BUFFER_BIT) # 清除之前缓存 glPointSize(3.0) # 设置点大小 glColor3f(1.0, 0.0, 0.0) # 设置点颜色 glBegin(GL_POINTS) # 此次开始,设置此次画的几何图形 x, y = circle(0, 0, 1, 100) for x_, y_ in zip(x, y): glVertex2f(x_, y_) glEnd() # 此次结束 glFlush() # 刷新屏幕 if __name__ == '__main__': glutInit(sys.argv) #初始化 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) #设置显示模式 glutInitWindowPosition(100, 100) #窗口打开的位置,左上角坐标在屏幕坐标 glutInitWindowSize(900, 600) #窗口大小 glutCreateWindow(b"Function Plotter") #窗口名字,二进制 glutDisplayFunc(plotfunc) #设置当前窗口的显示回调 glClearColor(1.0, 1.0, 1.0, 1.0) # 设置背景颜色 gluOrtho2D(-5.0, 5.0, -5.0, 5.0) # 设置显示范围 glutMainLoop() # 启动循环
主函数基本不需要变,其中glutInitDisplayMode的可选参数有
GLUT_RGB
|
0x0000
|
指定
RGB 颜色模式的窗口
|
GLUT_RGBA
|
0x0000
|
指定
RGBA 颜色模式的窗口
|
GLUT_INDEX
|
0x0001
|
指定颜色索引模式的窗口
|
GLUT_SINGLE
|
0x0000
|
指定单缓存窗口
|
GLUT_DOUBLE
|
0x0002
|
指定双缓存窗口
|
GLUT_ACCUM
|
0x0004
|
窗口使用累加缓存
|
GLUT_ALPHA
|
0x0008
|
窗口的颜色分量包含 alpha 值
|
GLUT_DEPTH
|
0x0010
|
窗口使用深度缓存
|
GLUT_STENCIL
|
0x0020
|
窗口使用模板缓存
|
GLUT_MULTISAMPLE
|
0x0080
|
指定支持多样本功能的窗口
|
GLUT_STEREO
|
0x0100
|
指定立体窗口
|
GLUT_LUMINANCE
|
0x0200
|
窗口使用亮度颜色模型
|
不是特别清各个参数的意义,先用着吧,等以后学的更深入再说打
glBegin设置了即将绘制的几何图形,选项有....不多废话,上个图
代码的结果可以看到是一堆点组成了圆
把26行的参数改成折线
glBegin(GL_LINE_STRIP) # 此次开始,设置此次画的几何图形
这里之所以用GL_LINE_STRIP就能产生封闭的圆,是因为生成数据时候用的就是0-2π
所以换成用GL_LINE_LOOP效果是一样的