Python 3 학습노트(11): PyOpenGL의 웃는 얼굴 그리기 비트맵

1688 단어 Python
  • 소개
  • 웃는 얼굴을 보여 주는 비트맵 프로그램
    OpenGL에서 비트맵은 2색 이미지로 화면에 알파벳이나 문자(예를 들어 아이콘)를 그릴 수 있다.
    OpenGL은 비트맵을 그리는 함수glBitmap을 제공합니다.
    프로그램 정의 16×16의 픽셀 비트맵, 비트맵은 64개의 기호 바이트가 없는 그룹으로 그림에 줄마다 4바이트가 있다(줄마다 마지막 두 바이트는 사용되지 않는다).첫 번째 바이트의 일곱 번째 비트는 아이콘의 왼쪽 아래 모서리에 해당합니다(예: 이미지 위아래 거꾸로).
    함수 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()
    

    좋은 웹페이지 즐겨찾기