Web 中的 3D 游戏

为了 web 上丰富的游戏体验,一个好武器是 webGL,它可以在 HTML <canvas> 元素上渲染。WebGL 基本上是 Web 的 OpenGL ES 2.0 版本——作为一个 JavaScript API,它提供了能构建丰富的交互式动画和游戏的工具。你可以使用硬件加速的 JavaScript 生成和呈现动态 3D 图像。

文档和浏览器支持

WebGL 项目的文档和规范由 Khronos Group 维护,而非大部分 Web API 采用的 W3C。它很好地支持了现代浏览器甚至是移动手机,由此你无需担心太多。主流浏览器均支持 WebGL,你需要关注的仅仅是在你使用的设备上进行优化。

WebGL 2.0(基于 OpenGL ES 3.0)将在不久的将来发布,它将带来许多改进,并将帮助开发人员使用当前强大的硬件为现代 web 构建游戏。

对基本 3D 理论的解释

三维理论的基本原理围绕三维空间中的图形展开,并使用坐标系来计算它们的位置。请参阅我们的解释基本 3D 理论文章,了解你需要的所有信息。

进阶概念

使用 WebGL,可以做更多事情。应该深入学习一些高级概念,如着色器、碰撞检测或最新的热门话题:Web 虚拟现实。

着色器

值得一提的是着色器,其本身有很多值得探讨的地方。着色器使用一种特殊的 OpenGL 着色语言——GLSL,其语法类似于 C 语言,由图形管道直接执行。着色器可分为顶点着色器和片段着色器(或像素着色器),前者将形状位置转换为真实的 3D 绘图坐标,后者则计算渲染颜色和其他属性。你一定要看看 GLSL 着色器这篇文章,了解更多关于它们的信息。

碰撞检测

很难想象没有碰撞检测的游戏会是什么样子——我们总是需要计算出物体什么时候碰撞到另外一个物体。我们有相关信息可供你学习:

  • 2D 碰撞检测
  • 3D 碰撞检测

WebXR

虚拟现实的概念并不新鲜,但由于 Meta Quest、WebXR API(目前处于试验阶段)等硬件的进步,它正风靡网络,用于从 XR 硬件捕捉信息并将其提供给 JavaScript 应用程序使用。更多信息,请阅读 WebXR——Web 虚拟和增强现实 (en-US)。

还有一篇用 A-Frame 构建基本演示 (en-US)的文章,向你展示了使用 A-Frame 框架构建 3D 环境的虚拟现实是多么的简单。

库和框架的兴起

编码原生 WebGL 是相当复杂的,从长远来看,随着项目更进一步,你会希望掌握它(请参阅我们的 WebGL 文档以开始学习)。在实际项目中,你可能也会使用框架来加快开发速度,并帮助你管理正在进行的项目。在 3D 游戏中使用框架还有助于优化性能,因为所使用的工具可以解决很多问题,这样就可以专注于构建游戏本身。

最流行的 JavaScript 3D 库是 Three.js,这是一个多用途工具,它使常见的 3D 技术更易于实现。还有其他一些流行的游戏开发库和框架也值得一看。A-Frame、PlayCanvas 和 Babylon.js 是其中最知名的几个,它们拥有丰富的文档、在线编辑器和活跃的社区。

使用 A-Frame 搭建一个基础演示

A-Frame 是一个用于搭建 3D 和 VR 体验的 Web 框架。在内部,它是一个具有已声明的实体组件模式的 three.js 框架,也就是说我们只需借助 HTML 即可搭建场景。请参阅使用 A-Frame 构建基本演示 (en-US)子页面来了解创建演示的步骤。

使用 Babylon.js 搭建一个基础演示

Babylon.js 是最受开发者欢迎的 3D 游戏引擎之一。与其他任何 3D 库一样,它提供了内置函数,帮助你更快地实现常见的 3D 功能。请参阅 使用 Babylon.js 构建基本演示 (en-US)子页,其中包括建立一个开发环境,构建必要的 HTML,以及编写 JavaScript 代码。

使用 PlayCanvas 搭建一个基础演示

PlayCanvas 是一个流行的 GitHub 开源 3D WebGL 游戏引擎,有在线编辑器和良好的文档。更多详细信息 请参阅使用 PlayCanvas 构建基本演示 (en-US) ,文章将进一步介绍如何使用 PlayCanvas 库和在线编辑器搭建演示。

使用 Three.js 搭建一个基础演示

与其他库一样,Three.js 也能带来巨大优势:无需编写数百行 WebGL 代码来构建任何有趣的内容,而是可以使用内置的辅助函数来更轻松、更快速地完成工作。请参阅使用 Three.js 构建基本演示子页面,了解创建演示的逐步过程。

其他工具

Unity 和虚幻引擎可以将你的游戏通过 asm.js (en-US) 输出到 WebGL,因此你可以自由地使用这些工具与技术来构建可被输出到 Web 上的游戏。

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

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

相关文章

计算机实体安全

计算机实体安全定义&#xff1a; 对场地环境、设施、设备和载体、人员采取的安全对策和措施。 一、计算机可靠性与故障分析 1.1 计算机的可靠性 可靠性 (狭义) ■计算机在规定时间与条件下完成规定功能的 概率 ■规定条件&#xff1a;环境条件&#xff0c;使用条件&#xff0…

2024年计算机三级|数据库习题整理(自用②)

所有题目均来自【三级数据库技术基础题库】&#xff0c;此博客仅包含部分填空题型&#xff0c;用于自主的回顾学习&#xff0c;仅供参考。 1、DBAS生命周期中&#xff0c;规划与分析的主要工作内容包括系统规划与定义、可行性分析和&#xff08;项目规划&#xff09; 2、DFD方…

软件高级:软件架构评估-基于场景的评估方法

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Android Studio 和 lombok 的版本适配、gradle依赖配置、插件安装及使用

文章目录 Intro注意事项Android Studio 和 lombok 的版本选择及下载下载链接 在 Android Studio 中安装一次 lombok 插件在每个 gradle 项目中添加 lombok 相关依赖(如要用到)使用ref Intro 用惯了 JavaMavenIDEA 开发后端服务&#xff0c;突然有一天用 JavaGradleAndroidStud…

C# WPF编程-事件

C# WPF编程-路由事件 路由事件概要路由事件的三种方式 WPF事件WPF最重要的5类事件&#xff1a;生命周期事件 鼠标事件键盘事件多点触控输入原始触控 路由事件概要 路由事件是具有更强传播能力的事件&#xff0c;它们可在元素树中向上冒泡和向下隧道传播&#xff0c;并沿着传播…

端口的学习

端口是什么口&#xff1f;【网络常识3】_哔哩哔哩_bilibili 简化后的数据包&#xff1a; 软件和端口是1对多的关系。 http默认端口是80 https默认端口是443

智慧工地解决方案,智慧工地项目管理系统源码,支持大屏端、PC端、手机端、平板端

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR&AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最线实现项目对人、机、料、法、环的全…

神级工具之git (一): git 基操

一切都从&#xff1a;Git User Manual开始&#xff0c;或者中文版的Git中文手册 核心概念 工作区 工作区我们可见的&#xff0c;可以进行修改的目录树。我们可以在目录树中进行文件的查看&#xff0c;修改。通常我们会使用一个神级编辑器Vim。我给她取了个名字&#xff0c;就…

2024年C语言最新经典面试题汇总(1-10)

C语言文章更新目录 C语言学习资源汇总&#xff0c;史上最全面总结&#xff0c;没有之一 C/C学习资源&#xff08;百度云盘链接&#xff09; 计算机二级资料&#xff08;过级专用&#xff09; C语言学习路线&#xff08;从入门到实战&#xff09; 编写C语言程序的7个步骤和编程…

【测试开发学习历程】认识Python + 安装Python

1 认识 Python 人生苦短&#xff0c;我用 Python —— Life is short, I use Python 1.1 Python 的起源 Python 的创始人为吉多范罗苏姆&#xff08;Guido van Rossum&#xff09;&#xff0c;江湖人称“龟叔” 1989 年的圣诞节期间&#xff0c;吉多范罗苏姆为了在荷兰首都阿姆…

mac 安装 nvm 【真解决问题】

前提 没有node环境已有git 下载 我用的gitee极速下载 git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout git describe --abbrev0 --tags配置 1. 配置变量 在用户的目录下新增文件 .zshrc export NVM_DIR"$HOME/…

unity学习(67)——控制器Joystick Pack方向

1.轮盘直接复制一个拖到右边就ok了&#xff0c;轮盘上是有脚本的。&#xff08;只复制&#xff09; 2.上面的显示窗也可以复制&#xff0c;但是要绑定对应的轮盘&#xff08;unity中修改变量&#xff09;&#xff0c;显示窗上是有脚本的。&#xff08;复制改变量&#xff09; 3…

康奋威科技邀您到场参观2024长三角快递物流展

参展企业介绍 杭州康奋威科技股份有限公司创立于2005年&#xff0c;由国家“万人计划”专家任天挺先生创立并担任法人&#xff0c;是一家专业从事智能装备研发与制造的国家级高新技术企业。专注于自动化控制、机械设计、信息化方面的技术研究&#xff0c;主要为太阳能光伏、智…

计算机底层结构

一、人类关于计算领域的发展 人类的祖先从树上下来以后开始了一轮新的生存挑战。与其他动物相比人类没有尖牙厉爪&#xff0c;只能去发展大脑&#xff0c;随着大脑的发展人类逐渐的站在了食物链的顶层。但是受制于人类活动和自然因素的发展&#xff0c;许多大型动物越来越少&a…

【动态规划】Leetcode 70. 爬楼梯

【动态规划】Leetcode 70. 爬楼梯 解法1 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 输入…

CICD流水线(ali)

后端CICD 一、打开云效流水线&#xff0c;创建流水线

【2024第十二届“泰迪杯”数据挖掘挑战赛】B题基于多模态特征融合的图像文本检索—解题全流程(持续更新)

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛B题 解题全流程&#xff08;持续更新&#xff09; -----基于多模态特征融合的图像文本检索 一、写在前面&#xff1a; ​ 本题的全部资料打包为“全家桶”&#xff0c; “全家桶”包含&#xff1a;数据、代码、模型、结果csv、教程…

十分钟掌握redis精髓指令

编译安装 git clone https://gitee.com/mirrors/redis.git cd redis make make test make install # 默认安装在 /usr/local/bin # redis-server 是服务端程序 # redis-cli 是客户端程序启动 mkdir redis-data # 把redis文件夹下 redis.conf 拷贝到 redis-data # 修改 redis.…

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i 运行测试

【ORB-SLAM3】在 Ubuntu20.04 上编译 ORM-SLAM3 并使用 D435i 运行测试 1 Prerequisites1.1 C11 or C0x Compiler1.2 Pangolin1.3 OpenCV1.4 Eigen3 2 安装 Intel RealSense™ SDK 2.02.1 测试设备2.2 编译源码安装 (Recommend)2.3 预编译包安装 3 编译 ORB-SLAM34 使用 D435i …

网络学习:RIPNG

目录 前言&#xff1a; 一、RIPNG与RIP的区别 二、如何配置RIPNG 如何解决RIPNG环路问题呢&#xff1f; 控制RIPNG的选路 1、修改RIPNG默认优先级 2.配置接口附加开销值从而干涉RIPNG的选路 RIPNG拓展配置 1.RIPNG的认证 配置RIPNG进程下的IPsec认证&#xff1a; 配…