OpenGl 模拟我的世界

本文详细介绍了使用OpenGL复刻《我的世界》漫游部分的关键技术,包括随机地形生成、鼠标坐标读取及声音交互。通过柏林噪声生成连续地形,实现无限世界效果;利用OpenGL拾取机制读取三维坐标,支持用户自定义搭建;同时探讨了音乐交互,采用C语言的PlaySound和mci播放音乐。
摘要由CSDN通过智能技术生成

大作业是尽作者和电脑所能,复刻了《我的世界》这款游戏的漫游部分,实验操作方法已在控制台给出,方便操作一下将由三个部分讲解作业中的关键技术

随机地形生成以及无限效果

  1. 鼠标点击并读取三维世界坐标,用于用户自定义搭建方块

  2. 声音的交互与背景音乐

一.
地形

柏林噪声是《我的世界》里地形生成的基本技术,也常在其他领域常用于生成噪波贴图等。根据不同的x, z坐标生成连续的y坐标,由此模拟丘陵,高山,湖泊等自然地形。

其中的数学原理是由多个频率,振幅不同正弦函数叠加而成,因此所得到的y值介于1和-1之间的小数,并且有倍率和持续度两个参数控制生成的振幅和频率等。

这是一个大规模的柏林噪声生成地形。(由于电脑显卡对于30*30规模的方块漫游已经开始降速了,所以不能去通过切换视角来演示,并且后面想加的东西也因此受限很多)

但这个世界对于漫游的人依然的无限的,即不论去哪里都会有地形存在,没有类似天空盒的限制,这个技术是我自己想出来的,根据glLookAt()函数中的位置参数和焦点参数,我们可以用非常简单的初中几何算出一定大小的视野方块的四角坐标。

由于是方块世界,我们需要寻找出落在视野矩形内的方块,硬核判断咯,首先将判断范围缩小

然后方块大小为10,所以依次判断这些方块边界点是否在视野矩形内,可能会有轻微的误判,但扩大视野矩形后边界的瑕疵不足以有影响

缺点:1.视野矩形大约为30*30个块,300边长的长方形,900个块对于电脑显卡已经有点吃

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值