Python 3学习笔记(11):PyOpenGL之绘制笑脸位图

  • 简介

显示一张笑脸的位图程序。

OpenGL中,位图是两色图像,可以用来在屏幕上绘制字母或字符(比如图标)。

OpenGL提供了绘制位图的函数glBitmap.

程序中定义了16×16的像素位图,位图是64无符号字节的数组,在图像中每行有4个字节(每行的最后两个字节未用)。第一个字节的第7位与图标的左下角相对应(即与图像上下倒置)   

调用函数glRasterPos2i指定当前光栅的位置。

函数glBitmap(宽度w,高度h,中心点x, 中心点y,xmove,ymove,数组bits)

xmove,ymove通常用于位图字体来移动到下一个字符单元格中。 

  • 代码 

#coding:utf-8
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
import random

def Redraw():
	#/* 16x16 smiley face */
	smiley= [ 0x03, 0xc0, 0, 0,\
		0x0f, 0xf0, 0, 0,\
		0x1e, 0x78, 0, 0,\
		0x39, 0x9c, 0, 0,\
		0x77, 0xee, 0, 0,\
		0x6f, 0xf6, 0, 0,\
		0xff, 0xff, 0, 0,\
		0xff, 0xff, 0, 0,\
		0xff, 0xff, 0, 0,\
		0xff, 0xff, 0, 0,\
		0x73, 0xce, 0, 0, \
		0x73, 0xce, 0, 0, \
		0x3f, 0xfc, 0, 0, \
		0x1f, 0xf8, 0, 0, \
		0x0f, 0xf0, 0, 0, \
		0x03, 0xc0, 0, 0 ] 
	glClearColor(0.0, 0.0, 0.0, 1.0)
	glClear(GL_COLOR_BUFFER_BIT)

	glColor3f(1.0, 1.0, 0.0)
	for i in range(100):
		glRasterPos2i(random.randint(0,1000) % width, random.randint(0,1000) % height)
		glBitmap( 16, 16, 8, 8, 0, 0, smiley)
	glFinish()

#改变窗口大小时调用
def Resize(w,h):
	global width, height
	width  = w
	height = h
	glViewport(0, 0, w, h)
	glMatrixMode(GL_PROJECTION)
	glLoadIdentity()
	glOrtho(0.0, w, 0.0, h, -1.0, 1.0)
	glMatrixMode(GL_MODELVIEW)

#使用glut初始化OpenGL
glutInit()
#显示模式:GLUT_SINGLE无缓冲直接显示|GLUT_RGB采用RGB
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB)
glutCreateWindow("Bitmap Smiley Face Example")


#调用函数绘制图像
glutDisplayFunc(Redraw)
glutReshapeFunc(Resize)

#主循环
glutMainLoop()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值