需要导入的库:

pygame: 这是一个游戏开发库,用于创建多媒体应用程序,提供了处理图形、声音和输入的功能。

from pygame.locals import *: 导入pygame库中的常量和函数,用于处理事件和输入。

OpenGL.GL: 这是OpenGL的Python绑定库,用于编写和执行OpenGL代码。

OpenGL.GLUT: 这也是OpenGL的Python绑定库,用于提供与设备无关的窗口和交互功能。

random: 这是Python的内置模块,用于生成随机数。

math: 这是Python的内置模块,提供了数学函数的支持。

OpenGL.GLU: 这是OpenGL的Python绑定库,提供了一些OpenGL实用函数,如透视投影。

终端输入:

pip install pygame

pip install PyOpenGL

源码:

import pygame

from pygame.locals import *

from OpenGL.GL import *

from OpenGL.GLUT import *

from random import randint, uniform

import math

from OpenGL.GLU import gluPerspective

# 初始化Pygame

pygame.init()

# 窗口大小

width, height = 800, 600

# 初始化Pygame显示

pygame.display.set_mode((width, height), DOUBLEBUF|OPENGL)

# 透视投影设置

gluPerspective(45, (width/height), 0.1, 50.0)

# 初始摄像机位置

glTranslatef(0.0, 0.0, -5)

# 粒子类

class Particle:

def __init__(self):

self.x = 0

self.y = 0

self.z = 0

self.size = uniform(0.01, 0.05)

self.speed_x = uniform(-0.1, 0.1)

self.speed_y = uniform(-0.1, 0.1)

self.speed_z = uniform(0.1, 0.5)

self.color = (uniform(0, 1), uniform(0, 1), uniform(0, 1))

def update(self):

self.x += self.speed_x

self.y += self.speed_y

self.z += self.speed_z

def draw(self):

glBegin(GL_POINTS)

glColor3f(*self.color)

glVertex3f(self.x, self.y, self.z)

glEnd()

# 创建粒子列表

particles = [Particle() for _ in range(10000)]

# 主循环

running = True

while running:

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

glRotatef(1, 3, 1, 1)

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)

# 绘制粒子

for particle in particles:

particle.update()

particle.draw()

pygame.display.flip()

pygame.time.wait(30)

# 退出程序

pygame.quit()

效果:

一闪而释的效果:

 

精彩内容

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: