首页 > 其他分享 >从0开始写三维“软”引擎.part1 - 2013.7.13 - David Rousset

从0开始写三维“软”引擎.part1 - 2013.7.13 - David Rousset

时间:2023-04-23 10:46:23浏览次数:51  
标签:engine 13 Rousset how David part1 引擎 your 3D

I’d to like to share with you how I’ve learned to build what’s known as a “3D soft engine” through a series of tutorials. “Software engine” means that we will use only the CPU to build a 3D engine in an old school way (remember Doom on your 80386 ?). I’ll share with you the C#, TypeScript and JavaScript versions of the code. In this list, you should then find your favorite language or at least something near your favorite one. The idea is to help you transposing the following samples & concepts on your favorite platform. You’ll find the Visual Studio 2012 C#/TS/JS solutions to download at the end also.

我想要通过一系列教程和你分享我是如何学习构建一个“3D软引擎”的。“软引擎”即为“软件引擎”,顾名思义,意味着你只需要CPU就可构建一个3D引擎,以一种古老的方式(还记得80386上的Doom游戏吗?)。我会和你分享C#版本、TypeScript版本和JavaScript版本的代码。在这个列表里,你应该能够找到你感兴趣的语言的版本吧,或者至少接近你喜欢的语言的语言。这个方式是为了帮助你将以下的代码和概念翻译到你自己感兴趣的语言。在最后还会提供Visual Studio 2012 C#/TS/JS的解决方案供你下载。

So why building a 3D soft engine? Well, it’s simply because it really helps understanding how modern 3D works with our GPUs. Indeed, I’m currently learning the basics of 3D thanks to internal workshops delivered within Microsoft by the awesome David Catuhe. He’s been mastering 3D for many years now and matrices operations is hard-coded in his brain. When I was young, I was dreaming to be able to write such engines but I had the feeling it was too complex for me. Finally, you’ll see that this is not – that – complex. You simply need someone that will help you understanding the underlying principles in a simple way.

所以为什么要构建一个3D软引擎呢?好吧,仅仅是因为它能够很好地帮助你理解当前3D是如何在我们的GPU上工作的。当然,我当前正在学习的3D基础原理要多亏了微软内部的讨论会,在讨论会上David Catuhe传递给我的知识。他已经掌握了3D很多年了,矩阵向量的计算早已深深的刻在了他的脑子里。当我很小的时候,我多么希望能够写一个这样的三维引擎,但是没有人教给我。所以当时对我来说这是极其困难的事。文章最终,你将会明白其实这并不困难。

Through this series, you will learn how to project some 3D coordinates (X, Y, Z) associated to a point (a vertex) on a 2D screen, how to draw lines between each point, how to fill some triangles, to handle lights, materials and so on. This first tutorial will simply show you how to display 8 points associated to a cube and how to move them in a virtual 3D world.

参考:https://www.davrous.com/2013/06/13/tutorial-series-learning-how-to-write-a-3d-soft-engine-from-scratch-in-c-typescript-or-javascript/

标签:engine,13,Rousset,how,David,part1,引擎,your,3D
From: https://www.cnblogs.com/2008nmj/p/17345786.html

相关文章

  • 学习-13
    1.回顾1.nginx--反向代理负载均衡动静分离2.搭建nginx高可用集群---keepalived2.正文--redis[重点]1.什么是NOSQL2.NOSQL和RDBMS的区别3.NOSQL的产品4.介绍Redis5.安装Redis6.redis支持的数据类型3.什么是NOSQLNOSQL(notonlysql)不仅是sql,它是所有非......
  • 13款监测工具使用
    Linux运维必备的13款实用工具,你都用过吗?运维网工 2023-04-2209:00 发表于重庆收录于合集#Linux运维工具2个#运维工程师119个#网络运维77个#运维工具78个#运维管理66个本文介绍几款Linux运维比较实用的工具,希望对Linux管理员有所帮助。1、查看进程占用......
  • Vicuna-13B, an open-source chatbot trained by fine-tuning LLaMA
    一、项目背景WeintroduceVicuna-13B,anopen-sourcechatbottrainedbyfine-tuningLLaMAonuser-sharedconversationscollectedfromShareGPT.PreliminaryevaluationusingGPT-4asajudgeshowsVicuna-13Bachievesmorethan90%* qualityofOpenAIChatGPT......
  • Atom 1.13版本带来的哪些改变?
    Atom是GitHub基于Electron的开源文本编辑器,它的1.13版本为用户和开发人员增加了许多新的特性和改进,包括一个基准工具,一个“重新打开项目”菜单选项和API,以及一个自定义按钮解析器,它可以把Chrome键盘事件映射为Atom风格的按键。在Atom之前,只能使用Chrome的分析工具来度量A......
  • Atom 1.13版本带来的哪些改变?
    Atom是GitHub基于Electron的开源文本编辑器,它的1.13版本为用户和开发人员增加了许多新的特性和改进,包括一个基准工具,一个“重新打开项目”菜单选项和API,以及一个自定义按钮解析器,它可以把Chrome键盘事件映射为Atom风格的按键。在Atom之前,只能使用Chrome的分析工具来度量A......
  • Atom 1.13版本带来的哪些改变?
    Atom是GitHub基于Electron的开源文本编辑器,它的1.13版本为用户和开发人员增加了许多新的特性和改进,包括一个基准工具,一个“重新打开项目”菜单选项和API,以及一个自定义按钮解析器,它可以把Chrome键盘事件映射为Atom风格的按键。在Atom之前,只能使用Chrome的分析工具来度量A......
  • 【读书笔记】ISBN9787121353932
     【前言】是否所有人都可以公平地享受科技发展带来的生产力进步?AIGC应用越完善,内容生产的社会必要劳动时间就越少,人工就越没有价值。全社会新增劳动岗位的速度很快就会跟不上AIGC应用取代人工的速度,而不会使用AIGC应用的劳动者可能将无法获得收入、无法进行消费,从而逐步被剥离......
  • 仅1cm厚!华硕发布全球最薄13.3英寸笔记本
    近日,华硕发布了新款ZenbookS13OLED,官方称其为世界最纤薄的13.3英寸OLED笔记本电脑。据悉,这款电脑的厚度仅有1cm,重量也仅有1kg,相较其他同尺寸的笔记本,确实更加轻薄。材质上,这款笔记本采用了华硕独有的等离子陶瓷铝材料盖板,并采用了回收金属和塑料。在这样的体积内,ZenbookS1......
  • [oeasy]python0136_接收输入_input函数_字符串_str
    输入变量回忆上次内容上次研究了一行赋值多个变量a=b=5a,b=7,8 还研究了标识符的惯用法python使用的是snake_case蛇形命名法用下划线分隔开小写字母的方法这样就可以更合理地命名变量了  变量变量能变的量......
  • day 13 分糖果
    1.定义一个数组记录下每个人当前糖的个数;2.根据题设对糖的数目进行循环更新;3.当满足所以糖一致时结束;4.输出  后续代码实现过程中发现无需判断奇偶直接通过下式即可实现功能t[i+1]=(a[i]+1)/2;a[i]=(a[i]+1)/2;总代码如下:#include<iostream>usingnamespac......