首页 > 编程语言 >python 3d 2

python 3d 2

时间:2024-07-16 16:56:46浏览次数:6  
标签:OpenGL python pygame import 顶点 GL display 3d

import pygame  # 导入 Pygame 库,用于创建游戏窗口和处理事件
from pygame.locals import *  # 导入 Pygame 的本地模块,包含常用的变量和函数
from OpenGL.GL import *  # 导入 OpenGL 的核心功能
from OpenGL.GLUT import *  # 导入 OpenGL 的实用工具库
from OpenGL.GLU import *  # 导入 OpenGL 的实用工具库

# 定义立方体的顶点坐标
vertices = (
    (1, -1, -1), (1, 1, -1),  # 前面的两个顶点
    (-1, 1, -1), (-1, -1, -1),  # 左面的两个顶点
    (1, -1, 1), (1, 1, 1),  # 后面的两个顶点
    (-1, -1, 1), (-1, 1, 1)  # 右面的两个顶点
)

# 定义立方体的面
faces = (
    (0, 1, 2, 3),  # 前面的四个顶点
    (3, 2, 7, 6),  # 左面的四个顶点
    (6, 7, 5, 4),  # 后面的四个顶点
    (4, 5, 1, 0),  # 右面的四个顶点
    (1, 5, 7, 2),  # 上面的四个顶点
    (4, 0, 3, 6)  # 下面的四个顶点
)

# 定义面的颜色
colors = (
    (1, 0, 0),  # 红色
    (0, 1, 0),  # 绿色
    (0, 0, 1),  # 蓝色
    (1, 1, 0),  # 黄色
    (1, 0, 1),  # 紫色
    (0, 1, 1),  # 青色
    (1, 1, 1),  # 白色
    (0, 0, 0)  # 黑色
)

def Cube():
    """
    绘制立方体
    """
    glBegin(GL_QUADS)  # 开始绘制四边形
    for face in faces:
        x = 0
        for vertex in face:
            x += 1
            glColor3fv(colors[x])  # 设置顶点颜色
            glVertex3fv(vertices[vertex])  # 设置顶点坐标
    glEnd()  # 结束绘制四边形

def main():
    """
    主函数
    """
    pygame.init()  # 初始化 Pygame
    display = (800, 600)
    pygame.display.set_mode(display, DOUBLEBUF | OPENGL)  # 创建窗口
    gluPerspective(45, (display[0] / display[1]), 0.1, 50.0)  # 设置透视参数
    glTranslatef(0.0, 0.0, -5)  # 平移视图

    # Enable depth testing
    glEnable(GL_DEPTH_TEST)  # 启用深度测试

    while True:  # 主循环
        for event in pygame.event.get():  # 处理事件
            if event.type == pygame.QUIT:  # 如果是退出事件,则退出程序
                pygame.quit()
                quit()

        glRotatef(1, 3, 1, 1)  # 旋转立方体
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)  # 清除屏幕和深度缓冲
        Cube()  # 绘制立方体
        pygame.display.flip()  # 刷新屏幕
        pygame.time.wait(10)  # 稍微等待一下,减少 CPU 占用

main()  # 调用主函数,启动程序

  

标签:OpenGL,python,pygame,import,顶点,GL,display,3d
From: https://www.cnblogs.com/xiongwei/p/18305647

相关文章

  • Python3禁用AD账号与重置AD账号密码
    Python3禁用AD账号#LDAP服务器地址、端口号及连接参数importldap3fromldap3importServer,Connection,ALLserver=Server('10.10.22.14',port=389,get_info=ALL)conn=Connection(server,user='admin',password='yyy',auto_bind=True)username=......
  • 展示CSS3中的3D翻牌效果
    为了展示CSS3中的3D翻牌效果,我将为您提供一个简单的示例代码。在这个示例中,我们将创建一个简单的翻牌动画效果,类似于百度贴吧的3D翻牌效果。这里使用CSS3的transform属性来实现翻牌效果。以下是示例代码:HTML部分:<divclass="flip-card"><divclass="flip-card-inner"><div......
  • Python教程:ceil、floor、round、int取整
    1.向上取整math.ceilmath.ceil()严格遵循向上取整,所有小数都向着数值更大的方向取整。importmathmath.ceil(-1.5)#-1math.ceil(1.5)#2math.ceil(-0.9)#02.向下取整math.floor同math.ceil类似,方向相反,向下取整。importmathmath.floor(-0.5)#-1math.floor......
  • Python教程:input接受输入
    Python中input()函数接受一个标准输入数据,返回为字符类型。无论是int、float、list等,在输入的时候,都是以字符串存储。使用语法:a=input([prompt])#提示信息等待用户输入1.接受一个值a=input('input:')#input:100type(a)#strb=input()#abctype(b)#s......
  • python中os.stat().st_size、os.path.getsize()获取文件大小
    一、os.stat().st_sizeos.stat(filePath)返回读取指定文件的相关属性,然后利用stat模块进行处理。importosos.stat('data_feather_ys.feather')#os.stat_result(st_mode=33206,st_ino=3659174697257342,st_dev=2829373452,st_nlink=1,st_uid=0,st_gid=0,st_size=400......
  • 用Python统计次数的5种方法
    一、使用字典dict统计循环遍历出一个可迭代对象的元素,如果字典中没有该元素,那么就让该元素作为字典的键,并将该键赋值为1,如果存在则将该元素对应的值加1。lists=['a','a','b',1,2,3,1]count_dist=dict()foriinlists:ifiincount_dist:count_dist[i]+......
  • 2024最新版Python安装详细教程!一键安装,永久使用
    打开上面的Python官网地址,如下图所示,鼠标放入网页Downloads栏目,选择里面的windows操作系统。三、进入windows对应的页面,选择python版本(1)选择python的稳定发布版本StableReleases点击进入windows操作系统对应的页面,显示python安装版本,这些python安装版本适合windows操......
  • 安装python方法在Windows环境
    一、下载安装包​ 下载地址:​ https://www.python.org/downloads/​ 安装注意勾选:​ 注:安装位置可用默认C盘。二、更改国内源​ 更改配置文件:如没有文件创建文件。​ 位置:"C:\Users\32974\AppData\Roaming\pip\pip.ini"​ 添加内容:一条源。[global]index-url=ht......
  • 深度学习全景进阶:Python深度学习
    近年来,伴随着以卷积神经网络(CNN)为代表的深度学习的快速发展,人工智能迈入了第三次发展浪潮,AI技术在各个领域中的应用越来越广泛。注意力机制、Transformer模型(BERT、GPT-1/2/3/3.5/4、DETR、ViT、SwinTransformer等)、生成式模型(变分自编码器VAE、生成式对抗网络GAN、扩散模型Di......
  • 字节跳动内网开源的《Python项目开发实战》,GitHub飙升!
    今天给小伙伴们分享的这份手册的内容共15个章节,总共可以分为四个部分。第一部分,主要讲“Python开发入门”,这部分将重点放在了个人开发上,涵盖了简单的web应用开发和Python项目结构等。第二部分,主要讲“团队开发周期”,介绍书中的极客们在多人团队开发中遇到的问题,以及如何提......