Ubuntu 15.04 编译UE4 for Linux版

本文详细介绍了如何在Ubuntu系统中从GitHub获取Unreal Engine 4源代码,编译并成功运行Linux版本的Unreal Engine 4,包括源代码获取、编译流程、启动过程及创建工程的步骤,以及如何优化编译后的文件以节省硬盘空间,最终实现了实时光影效果的制作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

  源  起

  Unreal Engine 4 是全球最先进的Realtime Illumination & Physical 引擎;

  长期以来,UE4都只有Windows版和Mac版,今年终于向Linux开放,但是需要开发者自己动手编译C++源代码。。。好吧,正好练一下在Ubuntu系统中编译C++源代码;

  看来EP是认准了Linux系统的用户都是极客~ Ubuntu是最受欢迎的Linux系统,下面是我在Ubuntu中编译UE4的全过程:

 

  1、首先进入GitHub

  没错,EP已经把UE4的源代码托管到了传说中的GitHub上,地址:https://github.com/EpicGames,从GitHub获取UE4的源代码压缩包并提取出文件夹;

 

  2、获取最新存档

  Ctrl+Alt+T 打开终端,进入源码文件夹根目录,输入 ./Setup.sh ,现在开始从GitHub获取最新源代码的存档,并自动构建第三方库,请确保你的硬盘或分区有10G以上的空间,否则获取过程会出现failue的红色提示;

  获取并构建成功后,会出现如下提示:

  如果最后没出现”********** SUCCESS ****************“,则构建可能没有成功,请重复上一步;

If you don't see SUCCESS message in the end, then building did not finish properly.
In that case, take a look into /home/jack/Download/Unreal4/UnrealEngine-release/Engine/Build/BatchFiles/Linux/BuildThirdParty.log for details.

You run Ubuntu or its fork. All dependencies have been already prebuilt.

********** SUCCESS ****************

 

  3、生成data和index

  构建成功后,在终端输入 ./GenerateProjectFiles.sh ,这将生成Project所需的data和index,生成成功如下所示:

 

  4、编译测试

  接下来在终端输入 make SlateViewer,编译了一个SlateViewer,大约耗时259秒;

  这一步是可选的,仅仅测试生成一个app,你可以选择跳过,稍后在编译好的Editor里进行也可以。


  5、最关键的一步来了,编译Editor~

  在终端输入:make UE4Editor UE4Game UnrealPak CrashReportClient ShaderCompileWorker UnrealLightmass ,然后回车;

  这段命令是顺序编译五个模块,其实我们只需要UE4Editor就可以了,但是其他模块官方既然都提供了那就一起编译出来用吧;

  不过要确保你的硬盘上还有10G以上的空间哦,编译UE4真的很耗空间,目前生成的文件前后加起来快10个G了。。。

 

  好了,喝杯水去,一会儿回来鉴证奇迹~ 

  对了,编译期间最好不要运行其他软件;

 

  6、编译完成!

  显示耗时1689秒,速度还行哈,HP Z820 workstation性能果然强悍,据说有人编译了一个多小时。。。感谢HP Z820;

  编译完成后如果出现failue就是编译不成功,此时要重复上一步直到编译完成;

  我这边编译完成后,UE4文件夹的总体积已经变成了18G!这样的体积,在CG软件中前无来者;

  所以编译前一定要保证硬盘空间足够,否则也会导致编译失败哦;

  接下来就可以运行Linux版的UE4了~ 是不是有点小激动呢~

 

  7、启动UE4

  在终端输入: cd Engine/Binaries/Linux && ./UE4Editor  ,回车;

  启动~ 第一次启动会构建material\light等等,所以比较慢,大概30秒后,首次启动完成,然后发现界面居然是中文~

 

  用惯了英文的Maya/Max/Houdini/Naiad/Eclipse/Android Studio,突然来个中文界面还真有点不适应。。。

点击看大图

 

  关键如果是全中文那也可以,结果一半中文一半英文,有的地方翻译得还不恰当,于是我把界面改了英文;

 

  8、建立一个工程:

  建立工程之前,请确保硬盘还有至少2G的空间,因为UE4的一个工程会占用1G左右的空间。。。

  工程建立完成后,会听到显卡的风扇突然开始呼呼的响,看来UE4把显卡的GPU性能运用到了极致~

 

  9、添加文件路径到$PATH

  现在每次打开UE4都要进入很深的目录然后输入 ./UE4Editor 才能运行UE4,按照下面的方法,就可以在任意目录下输入 UE4Editor 来运行UE4了~

  在终端输入: 

  $ sudo gedit ~/.profile

  在此文件末尾添加类似下面的语句,把your path1改成你要添加的路径就可以了,如果添加两个路径,中间用冒号隔开即可,注意是冒号不是分号;

  export PATH=”$PATH:your path1:your path2 ...” 

  修改完成后 Ctrl+S 保存,然后注销再登录就可以生效了~

 

  10、释放硬盘空间

  如果硬盘空间不够,可以先把Engine文件夹下的Intermediate和Source文件夹移到其他盘,可以腾出大约10G的空间,不会影响UE4的启动和运行;

 

  新建工程

  好建一个Blank空白工程;

点击看大图

 

  但即使是空白,场景中也会有两张椅子和一张桌子,呵呵,多复制几把椅子,实时光影,效果很棒;

  尤其是桌上那个玻璃的实时折射效果很赞,不过需要手动改一下bluePrint,默认是没有这么好看的;

点击看大图

 

  玻璃材质的 BluePrint节点如下所示:

  需要修改Specular、Roughness、Refraction的相关参数;

  这个BluePrint节点编辑器是不是看起来很眼熟?没错,看起来很像Houdini的VEX节点

点击看大图

 

  玻璃节点调整之后的折射效果;

  默认的玻璃效果像一张平面的薄膜,没有任何折射,现在好多了~

点击看大图

 

  椅子扶手,从磨砂改为不锈钢~

  这跟在Maya中修改Shader是完全不一样的感觉,随时就能看到效果,实时更新~

  只是显卡的风扇一直满速呼呼在转。。。辛苦显卡了,UE4完全是基于GPU渲染的,请确保你的显卡支持GPU;

  GPU的运算速度远远高于CPU,但是对硬件的要求也很高;

点击看大图  

  地面是特意用两种Material做个对照,实时Displacement,凹凸部分对光照都有准确而实时的高光体现,效果很赞;

  椅子金属的高光部分可以实时反射光晕效果~ 

      

  好,Ubuntu下编译 Linux版的UE 圆满完成~

  编译完成总共占用硬盘19.7G,是我用过体积最大的CG软件~ 不过实时光影的效果的确很棒;

  编译前,我还想着把编译好的文件上传网盘共享,现在看这体积。。。想起网盘上传都限速,10个G不知要传多久,终于知道EP不发布Linux版的原因了~

  授人以鱼不如授人以渔,感兴趣的朋友可以按照我写的方法自己尝试编译一下,也许会有意想不到的收获哦。

 

转载于:https://www.cnblogs.com/jackchiang/p/4683469.html

### 回答1: 在 TURBO C 2.0 中,您可以使用 biosdisk() 函数来格式化软盘。 下面是一段代码示例: ``` #include <stdio.h> #include <dos.h> int main() { // 定义扇区的大小 unsigned int sector_size[3] = {512, 512, 1024}; // 定义填充字节 unsigned char fill_char[3] = {0xF6, 0xF6, 0x48}; // 格式化磁道 70 面 0 的前三个扇区 for (int i = 0; i < 3; i++) { int result = biosdisk(2, 0, 70, 0, i + 1, 1, sector_size[i], fill_char[i]); if (result != 0) { printf("格式化扇区 %d 失败,返回码: %d\n", i + 1, result); } } return 0; } ``` 请注意,在使用 biosdisk() 函数之前,需要包含 dos.h 头文件。 希望这能帮到您! ### 回答2: 使用TURBO C 2.0语言,可以通过以下代码格式化软盘的70磁道0面,并分别格式化3个扇区,大小分别为512字节、512字节和1024字节。其中,前两个扇区使用F6填充,第三个扇区使用48填充。 ```c #include<stdlib.h> #include<stdio.h> #include<dos.h> void formatFloppyDisk(){ union REGS regs; regs.h.ah = 0x0;// To format a floppy disk, we set AH=0 regs.h.dl = 0;// Drive number (0=A, 1=B, etc.) regs.x.cx = 0;// Track number to format regs.h.dh = 0;// Head number regs.h.al = 0;// Sector size (0=default, 1=512 bytes, 2=1024 bytes, 3=2048 bytes etc.) int FILL_BYTE = 0;// The byte value to fill the sectors with during formatting int NUM_SECTORS = 3;// Number of sectors to format // To format 70th track 0th head regs.x.ax = 0x1301; // 0x13 = Reset disk system, 01H = Reset only specified drive int86(0x13, &regs, &regs); // BIOS interrupt to reset disk system for (int i=0; i<NUM_SECTORS; i++){ regs.x.ax = 0x3101; // 0x31 = Write Format, 01H = Format only current track regs.x.bx = 0x0001; // 0x00 = Drive A:, 01H = Head 1, 0 = Generate ID Field depending on the disk in the drive 1 = Keep the ID Field all zeros regs.x.cx = 0x0170; // Track number=70(0-79 range) regs.h.dh = 0x00; // Head number=0 or 1 regs.h.al = 0x02; // Control byte=always zero regs.x.dx = i+1; // Sector number starting from 1 regs.x.si = 0x0000; // segment and offset of read/write buffer regs.x.di = 0x0000; // segment and offset of result if(i == 2){ FILL_BYTE = 0x48; // Fill the third sector with 48 regs.x.ax = 0x3102; // 0x31 = Write Format, 02H = Format sequential tracks immediately following the one being formatted }else{ FILL_BYTE = 0xF6; // Fill the first two sectors with F6 } regs.h.ah = FILL_BYTE; // Fill the sector with specified byte int86(0x13, &regs, &regs); // BIOS interrupt to format the specified sector } } int main(){ formatFloppyDisk(); return 0; } ``` 上述代码使用了INT 0x13,即BIOS中断服务例程,来执行软盘格式化操作。通过设置寄存器的不同参数,可以指定要格式化的磁道、面、扇区大小和填充字节。在这个例子中,我们格式化了软盘70磁道0面的3个扇区,前两个扇区使用F6填充,第三个扇区使用48填充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值