UE4 用 fastbuild 实现并行编译 Shader

其实也是用网上代码改的,参见这里 https://github.com/fastbuild/fastbuild/issues/539

然后自己集成进去就可以,参考 XGE 的实现即可,几个需要改的地方
1: UE4 ShaderCompiler.cpp 里面有个地方把 Shader mapping directory 从相对路径给转换成绝对路径了,这个需要去掉,同时保证UE4引擎和项目处于同一个盘上。
2: 编译机器上需要把 VC 2017 redistributable 和 DX 的 runtime 都装上,前者有很多地方可以下载,后者搜索 dxwebinstaller,从微软站上下了以后把 directx 的库都装齐
3: 依赖关系需要增加一些,需要修改 ShaderCompilerFASTBuild.cpp 里面,之前只有 .ush 和 .usf 的依赖,请照葫芦画瓢增加 .h .hlsl .glsl 的依赖,此外依赖文件除了 Engine\\Binaries\\ThirdParty\\Windows\\DirectX\\x64\\d3dcompiler_47.dll 之外,还需要增加下面这几个依赖
Engine\\Binaries\\ThirdParty\\Windows\\DirectX\\x64\\WinPixEventRuntime.dll
Engine\\Binaries\\Win64\\dxcompiler.dll
Engine\\Binaries\\Win64\\dxcompiler_sc.dll
Engine\\Binaries\\Win64\\dxil.dll

加上以后重新编译 UE4,配置好 fastbuild 即可,比花钱买 IncrediBuild 还是划算很多。

用山寨方法解决wine运行微信残留阴影窗口的问题

wine 运行微信时候,微信会留下一些阴影窗口在其他窗口上面,很影响操作。于是用最山寨的方式解决之。

用 WinSpy 可知,阴影窗口的类名微信统一叫做 “popupshadow”, 这样正好可以最大限度防止误杀,于是写个最简单的程序,每3秒查找所有这个类名的窗口,然后用 ShowWindow 隐藏即可。代码如下

#include “windows.h”
LPCTSTR windowClassName = L”popupshadow”;
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow)
{
for (;;)
{
for (HWND h = FindWindowEx(NULL, NULL, windowClassName, NULL);
h = FindWindowEx(NULL, h, windowClassName, NULL);
h != NULL)
{
ShowWindow(h, SW_HIDE);
}
Sleep(3000);
}
return 0;
}

然后用 mingw 交叉编译即可

i686-w64-mingw32-g++ -municode -m32 -o wechatkill wechatkill.cpp

后台保持它运行就可以正常使用微信了。

Unreal Engine 4 Linux 用集成显卡报 out of device memory 的解决办法

UE4 在 Linux 下面默认用 Vulkan 作为渲染 API,但是 Vulkan 渲染代码在遇到显存不够的时候会直接退出,如果用集成显卡,或者很老的独立显卡运行 UE4 的话,那么先编辑

Engine/Config/BaseEngine.ini

取消下面这行的注释

; OpenGL4 is deprecated, you can comment this back in to add it to your targeted RHI list
+TargetedRHIs=GLSL_430

然后把前面这行注释掉
;+TargetedRHIs=SF_VULKAN_SM5

就能启动了,启动时候会报个 OpenGL 已经废弃的警告,忽略就行。

斐讯R1升级要点

最近入手了一下斐讯R1音箱,因为斐讯翻车了,所以智能音箱只能当蓝牙和 airplay 音箱了。

折腾过程中发现几个点网上没有提到的,或者很难找到的,在这里汇总一下。
1: 音箱联网需要 APP 辅助,但是新装斐讯 AI APP 需要帐号登录,没有帐号的话不要着急,去斐讯商城注册一个即可,地址自行谷歌。
2: 无法绑定音箱还需要查看版本号的方法,先按三下顶部按钮,进行蓝牙配对以后,用手机放歌的时候再喊小讯小讯,就可以查询版本号了
3: 一键升级包里面的地址一般都已经挂了,所以需要自己随便架个服务器,完全没有必要劫持dns什么的,直接改txt里面的地址就好,用IP就可以,端口也可以不用标准的,我用的就是8080

最近评论

时光机

其他