這篇文章給大家分享的是有關(guān)使用python中opengl的案例的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。
為張家口等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及張家口網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都做網(wǎng)站、張家口網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!1.1 利用python的pygame和OpenGL制作動(dòng)態(tài)正方體cube。
1.2 安裝python3.8和pygame(省略)。
1.3 安裝OpenGL:
pip install PyOpenGL PyOpenGL_accelerate
效果圖【動(dòng)態(tài)】:
完整代碼:
#---導(dǎo)出模塊--- import pygame from pygame.locals import * from OpenGL.GL import * from OpenGL.GLU import * #---初始化pygame和定義窗口大小--- pygame.init() #OPENGL|DOUBLEBUF=DOUBLEBUF|OPENGL #DOUBLEBUF:雙緩沖模式(推薦和 HWSURFACE 或 OPENGL 一起使用) #創(chuàng)建一個(gè) OPENGL 渲染的顯示 pygame.display.set_mode((640,480), OPENGL|DOUBLEBUF) #---元組定義--- #定義正方體的xyz坐標(biāo)點(diǎn) CUBE_POINTS = ((0.5, -0.5, -0.5), (0.5, 0.5, -0.5),(-0.5, 0.5, -0.5), (-0.5, -0.5, -0.5),(0.5, -0.5, 0.5), (0.5, 0.5, 0.5),(-0.5, -0.5, 0.5), (-0.5, 0.5, 0.5)) #定義RGB顏色 CUBE_COLORS = ((1, 0, 0), (1, 1, 0), (0, 1, 0), (0, 0, 0),(1, 0, 1), (1, 1, 1), (0, 0, 1), (0, 1, 1)) # 定義面,四個(gè)點(diǎn)構(gòu)成一個(gè)面 CUBE_QUAD_VERTS = ((0, 1, 2, 3), (3, 2, 7, 6), (6, 7, 5, 4),(4, 5, 1, 0), (1, 5, 7, 2), (4, 0, 3, 6)) # 定義線,兩個(gè)點(diǎn)構(gòu)成一個(gè)線 CUBE_EDGES = ((0,1), (0,3), (0,4), (2,1), (2,3), (2,7),(6,3), (6,4), (6,7), (5,1), (5,4), (5,7),) #---定義畫立方體函數(shù)--- def drawcube(): # "繪制正方體",zip和list法 allpoints = list(zip(CUBE_POINTS, CUBE_COLORS)) #畫面積---開始---結(jié)束--- glBegin(GL_QUADS) for face in CUBE_QUAD_VERTS: for vert in face: pos, color = allpoints[vert] #在第2個(gè)for下面 glColor3fv(color) glVertex3fv(pos) #與第1個(gè)for對(duì)齊 glEnd() #邊線顏色黑色 glColor3f(0, 0, 0) # 繪制線---開始---結(jié)束--- glBegin(GL_LINES) for line in CUBE_EDGES: for vert in line: pos, color = allpoints[vert] glVertex3fv(pos) glEnd() #---主函數(shù)--- def main(): glEnable(GL_DEPTH_TEST) #初始化 攝像頭 glMatrixMode(GL_PROJECTION) gluPerspective(45.0,640/480.0,0.1,100.0) glTranslatef(0.0, 0.0, -3.0) glRotatef(25, 1, 0, 0) #啟動(dòng)循環(huán)--- while True: #事件檢測(cè) event = pygame.event.poll() #定義退出機(jī)制,在pygame的while循環(huán)中,這一步必備設(shè)置 if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE): break #清除屏幕 glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) #攝像機(jī)旋轉(zhuǎn) glRotatef(1,0,1,0) drawcube() #刷新畫面 pygame.display.flip() if __name__ == '__main__': main()
感謝各位的閱讀!關(guān)于使用python中opengl的案例就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
當(dāng)前文章:使用python中opengl的案例-創(chuàng)新互聯(lián)
標(biāo)題來源:http://www.rwnh.cn/article18/copidp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、ChatGPT、營銷型網(wǎng)站建設(shè)、App開發(fā)、做網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容