pyopengl全解析-番外篇(2d绘制)

pyopengl全解析-番外篇(2d绘制)

前言

番外只有一篇,主篇请参见《pyopengl全解析-1》

开始

窗口相关操作请参见《pyopengl全解析-1》

简介

绘图部分:
glBegin(mode)开始绘图,mode可以为:

  • GL_POINTS,很多个点
  • GL_LINES,很多条线段
  • GL_LINE_STRIP,连续线段
  • GL_LINE_LOOPGL_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)其中faceGL_FRONT(正面)或GL_BACK(背面,在2d绘图里没啥用), modeGL_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

拜拜,下课!
回到顶部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值