虽然pyinstaller支持pyopengl,但是调用GLUT之后,在其它电脑上面运行就会出现错误,索性按照之前C#上面的办法,把字体数据和函数用python重写

fontData.py

#! /usr/bin/env python
#coding=utf-8 '''
Copy from freeglut_font.c and freeglut_font_data.c
* Copyright (c) 1999-2000 Pawel W. Olszta. All Rights Reserved.
* Written by Pawel W. Olszta, <olszta@sourceforge.net>
* Creation date: Thu Dec 16 1999
* Modified by T.Q., <pasuka(at)foxmail(dot)com>, 25-10-2013
'''
from OpenGL import GL from fontData import fgGetFontById
fontDict = {"GLUT_BITMAP_8_BY_13":1,
"GLUT_BITMAP_9_BY_15":2,
"GLUT_BITMAP_HELVETICA_10":3,
"GLUT_BITMAP_HELVETICA_12":4,
"GLUT_BITMAP_HELVETICA_18":5,
"GLUT_BITMAP_TIMES_ROMAN_10":6,
"GLUT_BITMAP_TIMES_ROMAN_24":7} def BitmapCharacter(slt,cc):
'''
Draw a bitmap character
'''
if not cc:return -3
if not 0<=ord(cc)<=255:return -1
if not fontDict.has_key(slt): return -2
GL.glPushClientAttrib(GL.GL_CLIENT_PIXEL_STORE_BIT)
GL.glPixelStorei(GL.GL_UNPACK_SWAP_BYTES,GL.GL_FALSE)
GL.glPixelStorei(GL.GL_UNPACK_LSB_FIRST,GL.GL_FALSE)
GL.glPixelStorei(GL.GL_UNPACK_ROW_LENGTH,0)
GL.glPixelStorei(GL.GL_UNPACK_SKIP_ROWS,0)
GL.glPixelStorei(GL.GL_UNPACK_SKIP_PIXELS,0)
GL.glPixelStorei(GL.GL_UNPACK_ALIGNMENT,1)
font = fgGetFontById(fontDict[slt])
face = font['Characters'][ord(cc)]
GL.glBitmap(face[0], font['Height'], # The bitmap's width and height
font['xorig'], font['yorig'], # The origin in the font glyph
float(face[0]),0.0, #The raster advance -- inc. x,y
face[1:]) # The packed bitmap data...
GL.glPopClientAttrib()
return 0 def BitmapString(slt,s):
'''
Draw a bitmap string
'''
if not s:return -3
for k in s:
if not 0<=ord(k)<=255:
return -1
if not fontDict.has_key(slt):return -2
font = fgGetFontById(fontDict[slt])
GL.glPushClientAttrib(GL.GL_CLIENT_PIXEL_STORE_BIT)
GL.glPixelStorei(GL.GL_UNPACK_SWAP_BYTES,GL.GL_FALSE)
GL.glPixelStorei(GL.GL_UNPACK_LSB_FIRST,GL.GL_FALSE)
GL.glPixelStorei(GL.GL_UNPACK_ROW_LENGTH,0)
GL.glPixelStorei(GL.GL_UNPACK_SKIP_ROWS,0)
GL.glPixelStorei(GL.GL_UNPACK_SKIP_PIXELS,0)
GL.glPixelStorei(GL.GL_UNPACK_ALIGNMENT,1)
x = 0.0
for k in s:
face = font['Characters'][ord(k)]
if k=='\n':
'''
Step through the string, drawing each character.
A newline will simply translate the next character's insertion
point back to the start of the line and down one line.
''' GL.glBitmap(0,0,0.0,0.0,-x,-float(font['Height']),0)
x = 0.0
else:
GL.glBitmap(face[0],font['Height'],font['xorig'],font['yorig'],float(face[0]),0.0,face[1:])
x += float(face[0])
GL.glPopClientAttrib()
return 0

fontData.py

下略,因为行数实在太多

最新文章

  1. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(1:概述)
  2. Oracle EBS R12的启停脚本
  3. SQL SERVER中隐式转换的一些细节浅析
  4. linux下的一些操作(持续更新)
  5. Web前端技术研究:Css hack技术---令人沮丧的技术
  6. WCF 入门 (18)
  7. 搞不定linux下的无线网卡驱动的权宜之计
  8. Theme使用的几点注意事项
  9. oracle nologging用法(转)
  10. 程序员之---C语言细节22(函数返回指针注意事项&amp;lt;悬空指针&amp;gt;、查看进程能够分配的内存大小)
  11. The Willpower Instinct
  12. js初级入门
  13. 浏览器加载和渲染html的顺序-css渲染效率的探究(转载)
  14. IO多路复用select/poll/epoll详解以及在Python中的应用
  15. DirectInfo.GetFiles返回数组的默认排序
  16. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他
  17. ios atomic nonatomic区别
  18. 调用飞信HTTP接口给自己发短信
  19. windows端口
  20. javascript forEach无法break,使用every代替

热门文章

  1. [uiautomator篇] bluetooth---接口来做
  2. Kubernetes对象
  3. SHUoj 神无月排位赛
  4. perl学习之精髓中的精髓
  5. Spring Batch 文档(中文)
  6. qu de hanzi 首字母
  7. Peter Norvig:十年学会编程
  8. 三种Model模式
  9. electron 自定义菜单
  10. P2085 最小函数值 洛谷