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,一串连续四边形pyopengl全解析-番外篇(2d绘制)_第1张图片

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()

结果:
pyopengl全解析-番外篇(2d绘制)_第2张图片


作者

hit-road

拜拜,下课!
回到顶部

你可能感兴趣的:(python,opengl,3d渲染)