中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

使用python中opengl的案例-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關(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)】:

使用python中opengl的案例

完整代碼:

#---導(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)

成都網(wǎng)站建設(shè)公司
河北区| 浦县| 安阳县| 兴安县| 洛川县| 修武县| 迭部县| 凤山市| 宁夏| 夏津县| 赤壁市| 武义县| 信宜市| 甘谷县| 四子王旗| 江口县| 衡东县| 汪清县| 浑源县| 巍山| 顺昌县| 常宁市| 文水县| 富民县| 广德县| 汤原县| 隆尧县| 且末县| 侯马市| 隆德县| 南陵县| 博湖县| 贵阳市| 葫芦岛市| 贵溪市| 钦州市| 新民市| 晋江市| 称多县| 阿荣旗| 雷州市|