2026/4/16 21:34:37
网站建设
项目流程
软件开发包含网站开发吗,成都市互联网协会网页设计,wap娃派手机信息网,怎样建设传奇网站空间0.问题描述自学Python Crash Course, 3rd Edition A Hands-On, Project-Based Introduction to Programming (Eric Matthes) 《Python编程从入门到实践》这本书在做外星人入侵项目的时候#xff0c;我发现绘制飞船和绘制子弹的方法不一样#xff0c;是单纯书想让我们多学一点…0.问题描述自学Python Crash Course, 3rd Edition A Hands-On, Project-Based Introduction to Programming (Eric Matthes) 《Python编程从入门到实践》这本书在做外星人入侵项目的时候我发现绘制飞船和绘制子弹的方法不一样是单纯书想让我们多学一点还是它们本就要用两种不同的方法绘制1. 绘制飞船用的是 blit()self.image pygame.image.load(images/ship.bmp) self.screen.blit(self.image, self.rect)为什么因为飞船是有一张位图图像bmp作为资源。blit 的作用就是把某张图片Surface贴到主屏幕 Surface 上某一个位置。所以游戏中所有带图像的东西角色、敌人、背景、按钮等都用 blit。我们可以把 blit 理解成 Photoshop 的“把这个图层贴到画布上”。2. 绘制子弹用的是 pygame.draw.rect()pygame.draw.rect(self.screen, self.color, self.rect)为什么因为子弹只是一个长方形没有图片资源。我们不需要去加载位图 bmp直接让 pygame 画一个矩形就够了。pygame.draw 系列可以画rect矩形circle圆line线ellipse椭圆polygon多边形这些是 数学形状不是图片。3. 总结1区别blit 把一张已有的图贴上去pygame.draw 根据坐标画一个形状。一个贴贴纸一个拿画笔画符号。更复杂一点就是blit 把一块内存复制到另一块更接近底层图像渲染pygame.draw 是一个 CPU 计算几何路径再渲染成像素的过程。在简单图形上 draw 很快但复杂阴影/纹理只能靠 blit。2什么时候用 blit什么时候用 draw需要图像细节 —— 用 blit只是几何特征 —— 用 draw。4.补充pygame 的图形渲染逻辑fill → 涂背景色draw / blit → 把所有游戏元素画上去flip → 把这一帧显示到屏幕5.补充渲染管线是什么1AlienInvasion就是我们做的一个渲染管线清空画布 → 画背景 → 画物体 → 画简单几何 → 把这一帧显示出来也就是每一帧都要重新画整个世界。2真正的渲染管线做了什么一台 GPU 在每一帧会经历一系列步骤它的本质是控制流输入数学世界输出像素世界把它拆成我们能一眼看懂的结构① 世界坐标 → 相机坐标世界里物体的位置是数学点x, y, z。第一步是让“摄像机”知道我们在哪。② 相机坐标 → 屏幕坐标把 3D 变成 2D。③ 给物体贴皮肤纹理这个我们见过self.screen.blit(self.image, self.rect)在大游戏里等价于把一张纹理图按 UV 坐标贴到 3D 模型表面。④ 光照计算光从哪来材质反光吗阴影怎么打是金属还是皮肤这是 GPU 最忙的一步Shader着色器就在这里跑。⑤ 光栅化rasterization把连续的数学曲面变成屏幕上 2D 像素点。这是“从数学世界变成像素世界”的真正瞬间。⑥ 屏幕合成Frame Buffer → Flip这个我们也见过啦pygame.display.flip()但 GPU 的真实版本更复杂混合透明度后期处理HDR、Bloom、Motion Blur抗锯齿输出到显示器3总结渲染管线是一种世界观把“数学世界”一步一步转化成可视世界的流程。正文完。