虽然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

下略,因为行数实在太多

PyOpenGL下GlutBitmapCharacter的替代的更多相关文章

  1. OpenTK的glutBitmapCharacter的替代方法

    由于openTK并没有打包集成GLUT,字体显示就成了一个问题. 办法1:采用QuickFont 优点:可以使用系统自带的字体 缺点:代码尚未成熟.只能2D显示,无法随物体旋转.平移 办法2:同时调用 ...

  2. windows 下使用Nginx替代apache作为服务器

    说实话, 在windows下使用Nginx 着实有点不太方便, 但因项目需求, 又不想换系统(虽然可以搞个虚拟机玩), 只能用Nginx了 好了, 不多说了. 开始... 首先我用的是xampp包(A ...

  3. Windows下cmd的替代软件——PowerCmd

    Powercmd 是一款运行在windows下的cmd增强软件(A Better Command Prompt Replacement Tool),当前最新的版本为2.2. 官方提供试用版,貌似没有功 ...

  4. 使用mac下Fiddler的替代工具Charles进行手机抓包

    对手机的抓包有两种方式,各有优劣且互补,一般第一种即可,对于不走代理的 App 选择第二种方式 第一种 Fiddler: 利用 Fiddler 抓包,适合大多数走代理的应用, 优点 (1) 无需 ro ...

  5. 在orangepi-PC下使用pyopengl

    在OrangePi-PC下安装显卡驱动以及opengl: http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid= ...

  6. NoSql之MongoDB--Windows下数据库配置及初步使用

    1.NoSql简介 NoSql(Not Only Sql)指的是非关系型的数据库.下一代数据库主要解决几个要点:非关系型的.分布式的.开源的.水平可扩展的.原始的目的是为了大规模web应用,这场 运动 ...

  7. ubuntu下tomcat启动巨慢分析

    在一个ubuntu14新环境部署tomcat,通过CI启动一个应用时,启动耗时达到15分钟之久.仔细看tomcat输出的耗时统计日志发现如下日志: Creation of SecureRandom i ...

  8. MongoDB 介绍及Windows下安装

    一.MongoDB简介 MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种.它在许多场景下可用于替代传统的关系型数据库或键/值存储方式.Mongo使用C++ ...

  9. Ubuntu 16.04安装Notepadqq编辑器替代Notepad++

    Notepad++只有Windows平台产品,对于Linux下有其替代的产品Notepadqq. 安装: sudo add-apt-repository ppa:notepadqq-team/note ...

随机推荐

  1. xtu数据结构 I. A Simple Tree Problem

    I. A Simple Tree Problem Time Limit: 3000ms Memory Limit: 65536KB 64-bit integer IO format: %lld     ...

  2. 【机房收费系统 4】:VB获取标准北京时间,免除时间误差

    导读:这又是师傅给我指出的一个问题,说实话,其实开始根本没有当回事,觉得麻烦,可是,等我完成了获取标准北京时间后,我发现,这一步,是必须的.谢谢师傅对我的严格要求,让我一步一步的成长起来! 一.事件缘 ...

  3. Tomcat基础配置(一)

    详情请看散尽浮华的tomcat相关配置技巧梳理 本次只用于自己的查看,谢谢作者的谅解. tomcat常用架构:1)nginx+tomcat:即前端放一台nginx,然后通过nginx反向代理到tomc ...

  4. iOS学习笔记05-触摸事件

    一.事件分发处理[由外到内] 在iOS中发生触摸后,事件会加到UIApplication事件队列,UIApplication会从事件队列取出最前面的事件进行分发处理,通常会先分发给主窗口,主窗口会调用 ...

  5. Ubuntu16.04 on ThinkPad E455 不能识别耳机 的解决方法

    去年 (2016) 2月份在ThinkPad E455 上安装了Ubuntu 14.04 LTS (dual boot with Windows 10, upgraded to Ubuntu 16.0 ...

  6. BZOJ 2176 Strange string ——最小表示法

    本来想用来练习后缀自动机的,但是100w有点虚(事实证明确实T掉了). 只好上最小表示法. #include <cstdio> #include <cstring> #incl ...

  7. P2085 最小函数值 (堆)

    题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix^2+Bix+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...

  8. spring5响应式编程

    1.Spring5新特性    2.响应式编程响应式编程:非阻塞应用程序,借助异步和事件驱动还有少量的线程垂直伸缩,而非横向伸缩(分布式集群)当Http连接缓慢的时候,从数据库到Http数据响应中也会 ...

  9. 【Educational Codeforces Round 49 (Rated for Div. 2) 】

    A:https://www.cnblogs.com/myx12345/p/9843826.html B:https://www.cnblogs.com/myx12345/p/9843869.html ...

  10. K大数查询 BZOJ 3110

    K大数查询 [问题描述] 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位 ...