前言
番外只有一篇,主篇请参见《pyopengl全解析-1》。
开始
窗口相关操作请参见《pyopengl全解析-1》。
简介
绘图部分:
glBegin(mode)
开始绘图,mode
可以为:
GL_POINTS
,很多个点GL_LINES
,很多条线段GL_LINE_STRIP
,连续线段GL_LINE_LOOP
、GL_POLYGON
,多边形 (自动封口)GL_TRIANGLES
,很多个三角形GL_TRIANGLE_STRIP
,一串连续三角形(见示意图)GL_TRIANGLE_FAN
,一串连续三角形(见示意图)GL_QUADS
,很多四边形(注意不一定是矩形)GL_QUAD_STRIP
,一串连续四边形
glColor3f(r,g,b)
设置颜色,均为0~1之间的整数
glVertex2f(x,y)
绘制一个点(单独一个点或者一个顶点)
glEnd()
结束绘制
glPolygonMode(face,mode)
其中face
为GL_FRONT
(正面)或GL_BACK
(背面,在2d绘图里没啥用), mode
为GL_LINE
(只有线)或GL_FILL
(不仅有线,还有填充)
材质参见主篇第二集
栗子
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
def init():
glClearColor(0.0, 0.0, 0.0, 1.0)
gluOrtho2D(-1.0, 1.0, -1.0, 1.0)
def drawFunc():
glClear(GL_COLOR_BUFFER_BIT)
glColor3f(0.0, 1.0, 1.0)
glPolygonMode(GL_FRONT, GL_LINE)
glPolygonMode(GL_BACK, GL_FILL)
glBegin(GL_QUADS)
glVertex2f(-0.8, -0.8)
glVertex2f(-0.8, 0.8)
glVertex2f(0.8, 0.8)
glVertex2f(0.8, -0.8)
glEnd()
glFlush()
glutInit()
glutInitDisplayMode(GLUT_RGBA|GLUT_SINGLE)
glutInitWindowSize(400, 400)
glutCreateWindow(b"My OpenGL window")
glutDisplayFunc(drawFunc)
init()
glutMainLoop()
结果:
作者
hit-road
拜拜,下课!
回到顶部