【游戏引擎之路】登神长阶(七)——x86汇编学习:凡做难事,必有所得

5月20日-6月4日:攻克2D物理引擎。
6月4日-6月13日:攻克《3D数学基础》。
6月13日-6月20日:攻克《3D图形教程》。
6月21日-6月22日:攻克《Raycasting游戏教程》。
6月23日-7月1日:攻克《Windows游戏编程大师技巧》。
7月2日-7月6日:攻克《雅达利2600汇编游戏开发》。
7月7日-7月11日:攻克《x86/x64汇编语言》。

下个目标:《3D游戏编程大师技巧》

这次又是一次“异形”星球的征战。我昨天去骑行了60公里,这不是一般的60公里,最后20公里全是山路,回来把我累死了。 今天的精神状态不是很好,可以说“咬牙”把教程学完了。

但是,我发现我还喜欢上这种感觉了。不像是雅达利2600汇编那样陌生。

学汇编真的像那种顶尖的对局,真的一点错误也不能犯。我记的笔记比我一个学期记得还多。虽然就是几条语句,但我都密密麻麻地写上了注释。我以前读大学的时候如果能这么用功就好了。

这次教程我学了两个,一个是X86-32位的。一个是x86-64位的。两个都各有所长,也各有所短。比如第一个教程教到最后都没教怎么调用函数。而64位的基础讲得很好,但高级应用一点也没有。

这一通学习下来,我有一个最大的感悟,以前觉得汇编是比较“底层”的东西,比较“落后“的东西,毕竟现在的语言都冠上了一个“高级语言”的帽子。

这给我一种那要样的印象,如果我用的编程语言是枪和炮,那汇编语言就是冷兵器。怎么想都觉得有一种比较“落后”的印象。我学雅达利2600汇编的时候也是这个印象。

但是,当我学了x86的汇编之后,这个印象完全改观了。汇编简直是一种“次世代”的武器,他不是冷兵器,而是“高科技”,是激光剑。

他只是“难用”,而不是“弱”。相反,他强的离谱。

以前我听别人说学汇编,不止一次看到说现在的编译器很先进了,即便你学了汇编,写出的代码也不会像以前一样提升很多效率。我现在知道了,这东西就纯属放屁。从MMX到AVX,这种并行处理的能力,你是无论如何用写代码也写不出来的,什么编译器也做不到,必须得用汇编才能把这个强大的功能用出来。

而我的应用正是游戏引擎,最是需要批量处理图形的地方。

我之前学汇编其实只是看到了我的书上说有些注意性能的地方还是得用汇编。就是这么简单的一个作者的感受。我其实并没有想到汇编语言能够如此强大。

这其实也得益于我现在的“少即是多”的思想。因为我之前想着做游戏,总想着跨平台,做PC,做手机,现在我自已做引擎了,要求不能那么高了,跨平台是别想了,所以我专心把PC平台做好。所以我才有了学汇编的念头。如果我总想着跨平台,可能不会有这个念想。

以前金一南教授的一个讲座里面有一句话让我印象非常深刻:

凡做难事,必有所得。

这几乎成为了我人生的信条之一。这次又是印证了这句话的力量。

学汇编给我的收获比想象中大多了。我都有点迫不及待地去修改我之前的一些代码。比如以前我有一个Alpha混合的代码,因为DirectX的DirectDraw并不支持Alpha通道。所以我自已写了一段Alpha混合来支持半透明物体。这东西巨慢,本来800帧的,可以一瞬间拉下到200帧。而仅仅只是主角的飞行器用这个算法而已。如果用汇编,相信可以高很多。当然,这个也只是去尝试改进而已,其实主要的还是得靠硬件。如果只有Blt,我的帧数可以达到4000多。这是怎么换算法都达不到的。

不过,能够改进的地方还是得改进。比如,我的SpritePack的功能。这东西是硬件管不了的,都是靠我的算法来实现。这其中的效率提高汇编能够提供巨大的价值。

其实我本来想再学一下Python+机器学习的。这段时间也不知道怎么了,什么都想去了解。感觉AI将是我游戏开发中非常重要的一块拼图。我现在用AI制作图像,原画,用得非常顺手。这方面的知识想更深入的了解一下。

但是这段时间没有看书,一直是学教程,所以一直坐着,腰都受不了了。如果是拿着书本学,我可以看书的时候还躺一下,所以我选择学《3D游戏编程大师技巧》。这样缓解一下我的腰的压力。

过了这段时间,再看看能不能学Python。

加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/44879.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言---文件分类、设备文件、磁盘文件、实现打开/写/读/关闭/拷贝文件

设备文件: 屏幕(标准输出设备) fmt.Println()往标准输出设备写内容 键盘(标准输入设备) fmt.Scan()从标准输入设备读取内容 磁盘文件,放在存储设备上的文件 文本文件:以记事本打开,能看到内容(不是乱码) 二进制文件:以记事本打开…

微信右上角的“+”号,竟然能做这些事?90%的人不知道

微信,作为一款集社交、支付、娱乐于一体的超级应用,它的每一次更新都吸引着亿万用户的目光。 在微信的众多功能中,右上角的""号图标看似普通,实则隐藏着许多不为人知的实用技巧。本文将从四个方面深入挖掘这些隐秘功能…

打包时提示:Missing Gradle Project Information.或者在加载gradle时出错

1.Android打包弹出错误提示框:missing gradle project information. please check if the IDE successfully synchronized its state with the Gradble project model. 2.加载gradle出错:修复报错后 File -> Sync Project with Gradle Files

用JavaScript将 NCR(Numeric Character Reference)标记转换为对应字符的方法

0 &#xff0c 、&#11111……是什么鬼&#xff1f; 最近&#xff0c;要将一些网页内容复制到<textarea>文本框中作进一步处理&#xff0c;发现有些网页内容中包含&#xff0c或之类的标记&#xff0c;会被原样复制到<textarea>文本框中。 如果将这些网页内容直…

Codeforces Round #956 (Div. 2) and ByteRace 2024(A~D题解)

这次比赛也是比较吃亏的&#xff0c;做题顺序出错了&#xff0c;先做的第三个&#xff0c;错在第三个数据点之后&#xff0c;才做的第二个&#xff08;因为当时有个地方没检查出来&#xff09;所以这次比赛还是一如既往地打拉了 那么就来发一下题解吧 A. Array Divisibility …

text prompt如何超过77个词

【深度学习】sdwebui的token_counter,update_token_counter,如何超出77个token的限制?对提示词加权的底层实现_prompt中token权重-CSDN博客文章浏览阅读1.6k次,点赞26次,收藏36次。文章探讨了如何在StableDiffusionProcessing中处理超过77个token的提示,涉及token_counte…

公司网站建站模板源码系统 响应式网站模版 随心自定义 带完整的代码包以及搭建部署教程

系统概述 公司网站建站模板源码系统是一套基于最新技术开发的网站建设解决方案。该系统集成了众多先进的网站开发工具和功能模块&#xff0c;旨在帮助企业快速构建出美观、实用的公司网站。通过采用模块化设计&#xff0c;系统实现了高度可定制性&#xff0c;企业可以根据自身…

土木转行嵌入式,拿到一家初创公司的嵌入式研发offer,值得去吗

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;不论从未来行业的发展前景…

java项目如何配置不同环境变量 以及 原理

如何配置不同的profile 首先&#xff0c;一个java项目&#xff0c;需要有不同的环境配置&#xff0c;打包时&#xff0c;自动使用对应的配置。那么&#xff0c;如何实现呢&#xff1f; 在你的Spring Boot项目的src/main/resources目录下创建或添加一个application.yml文件。这…

纯CSS瀑布流

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>瀑布流布局</title> <style>/* 瀑布…

[论文精读]BrainLM: A foundation model for brain activity recordings

论文网址&#xff1a;pdf (openreview.net) 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 省流版 1.1. 心得 1.2…

redis批量删除keys,用lua脚本。

文章目录 现象解决方法 现象 系统报错&#xff1a; misconf redis is configured to save ....后查看机器内存。 是内存满了&#xff0c;需要删除其中的key 解决方法 (1) 编写一个脚本&#xff0c;放在redis-cli.exe同一个目录 (2) 脚本内容如下&#xff1a; -- 使用Lua脚…

经典文献阅读之--Self-Supervised Bird’s Eye View Motion,,(基于跨模态信号的自监督鸟瞰图运动预测)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

window11连接lenovo 熊猫 Pro 打印机 M7328W

1、win11先下驱动&#xff08;将USB线接至电脑、电源通电&#xff09;&#xff0c;型号在后背面插电源的地方可以找到。 图1 开始电源按钮&#xff0c;会有蓝、绿、红闪烁灯光循环显示。 下载驱动&#xff1a; 图像发现 M7328W 然后按照说明书安装即可。 2、安装完成后&…

Delta的最新更新可让iPad用户同时模拟多款游戏

Delta iOS 应用程序发布了一个更新&#xff0c;引入了复古 游戏模拟器重新设计的标识&#xff0c;以及原生 iPad 支持&#xff0c;允许用户同时玩多个 游戏。 据 Delta 开发者 Riley Testut 称&#xff0c;欧盟用户可以立即通过AltStore PAL 下载更新&#xff0c;但其他用户则需…

【机器学习】朴素贝叶斯算法详解与实战扩展

欢迎来到 破晓的历程的 博客 ⛺️不负时光&#xff0c;不负己✈️ 引言 朴素贝叶斯算法是一种基于概率统计的分类方法&#xff0c;它利用贝叶斯定理和特征条件独立假设来预测样本的类别。尽管其假设特征之间相互独立在现实中往往不成立&#xff0c;但朴素贝叶斯分类器因其计算…

项目纪实 | 业务不停机、升级0感知!万里数据库生产环境助力操作系统升级 获客户点赞

为积极响应和落实国家、集团相关要求&#xff0c;某运营商省公司历时一个月将GreatDB数据库集群下Red Hat操作系统升级为BigCloud操作系统&#xff0c;以建立完善的IT自主可控体系&#xff0c;推动产业链生态发展。 源起&#xff1a;项目背景一览 2024年初&#xff0c;万里数…

基础架构服务API:降低成本,提升业务效益

基础架构服务API的应用可以显著降低企业的成本&#xff0c;并提升业务效益。通过使用这些API&#xff0c;企业可以充分利用云计算、自动化部署和资源管理等功能&#xff0c;从而减少了传统基础设施所需的大量投资和维护成本。这些API还提供了弹性扩展和自动化功能&#xff0c;使…

ABeam News | FY25 ABeam德硕大中华区入社式,飞往崭新航向!

FY25 ABeam大中华区入社式 7月1日&#xff0c;51名 ABeam大中华区新生在艾宾信息技术开发&#xff08;上海&#xff09;有限公司大连分公司&#xff08;以下简称TDC&#xff09;报到&#xff0c;我们为他们的到来准备了隆重的入社仪式&#xff0c;并举办了热情而又温馨的欢迎晚…

springboot美食分享平台-计算机毕业设计源码45429

基于Web美食分享平台的系统设计与实现 摘 要 本研究基于Spring Boot框架&#xff0c;设计并实现了一个Web美食分享平台&#xff0c;旨在为用户提供一个交流分享美食体验的社区平台。该平台涵盖了用户注册登录、美食制作方法分享发布、点赞评论互动等功能模块&#xff0c;致力于…