Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

上架微软商城 uwp 支持xbox的话 你是我的神 #69

Open
lithiumleeow opened this issue Jan 26, 2023 · 73 comments
Open

上架微软商城 uwp 支持xbox的话 你是我的神 #69

lithiumleeow opened this issue Jan 26, 2023 · 73 comments
Labels
wontfix This will not be worked on

Comments

@lithiumleeow
Copy link

现在xbox上没有一个好用的bili应用了,如果这个能上去 只能说是无敌状态了

@awasl
Copy link

awasl commented Jan 26, 2023

确实,我xbox上哔哩哔哩用起来真的要死

@xfangfang
Copy link
Owner

目前移植到其他平台不在我的计划之内,但是应用本身作为一个OpenGL应用移植到其他平台在技术上确实是易于实现的,从代码实现的设计上也考虑到了多平台处理(有一点考虑但是不多)

应用外部依赖不多,用于视频播放的有ffmpeg和mpv,用于画面显示的可以是SDL2或GLFW。所有能运行上述库的平台都能“轻松”移植wiliwili。

欢迎任何有这个想法的程序员参与,我没有相关的设备和时间来实现,如果有问题或者有想法欢迎在一开始就联系我,我可以随时提供支援。

ps 云之幻大佬的哔哩是不是可以在xbox上运行?

@awasl
Copy link

awasl commented Jan 26, 2023

云之幻大佬的已经寄了(悲

@hez2010
Copy link

hez2010 commented Jan 26, 2023

云之幻大佬的哔哩可以在xbox上运行,但是他的API已经没法用了,现在看不了视频。
另外Xbox只有DirectX,不存在OpenGL。

@xfangfang
Copy link
Owner

xfangfang commented Jan 26, 2023

云之幻大佬的哔哩可以在xbox上运行,但是他的API已经没法用了,现在看不了视频。

另外Xbox只有DirectX,不存在OpenGL。

如果是不支持OpenGL的话,移植就会费力一些,画面渲染部分需要移植nanovg,这一步可能有其他人已经做过了。

视频播放部分就比较麻烦,因为libmpv貌似只提供了OpenGL接口,所以可能需要直接用ffmpeg重写一下播放器,或者给mpv增加DirectX的接口。


补充一下 libmpv 除了OpenGL 接口,也支持软件渲染,包括楼下说的貌似也有其他图形api的支持,所以mpv和ffmpeg这边应该问题不大

@xfangfang xfangfang added the wontfix This will not be worked on label Jan 29, 2023
@zeromake
Copy link
Collaborator

zeromake commented Feb 8, 2023

@xfangfang
貌似有人做过 dx11 的 mpv 后端(貌似已经在 mpv 主仓库了,应该是一些特性吧)
mpv-player/mpv#5979
nanovg 的话也有人做了 dx11 的后端
https://github.com/cmaughan/nanovg
不过 winrt 的窗口创建还是比较麻烦的,记得 sdl2 有 winrt 支持

@xfangfang
Copy link
Owner

@zeromake 感谢收集这些信息,wiliwili 目前也支持使用 sdl2 来负责输入与创建窗口。(实现的是比较基础的部分,有一些细节和使用 glfw 实现的部分有出入)

貌似从可行性上看是没什么大问题了,现在就差一个愿意研究这一方面的程序员啦!

@xfangfang
Copy link
Owner

云之幻大佬的哔哩可以在xbox上运行,但是他的API已经没法用了,现在看不了视频。
另外Xbox只有DirectX,不存在OpenGL。

大佬他又开始更新啦
Richasy/Bili.Uwp@e8fd79f

@zeromake
Copy link
Collaborator

@xfangfang
我在尝试了,不过有些问题,因为不熟悉 cmake,我把 borealis 改成了我比较熟悉的 xmake 编译
https://github.com/zeromake/borealis
但是发现几个依赖有些问题:

  1. yoga 1.19.0 没法用,wiliwili/library/lib/extern/yoga 是哪个版本。
  2. fmt tweeny 都没法用最新的,会出现奇怪的编译错误,完全看不懂为什么会报错的那种,能说一下 wiliwili/library/lib/extern 里的版本吗?

其它依赖倒是没啥问题,一些 xmake 官方没有维护的库我自己放到 https://github.com/zeromake/xrepo 里了。

@zeromake
Copy link
Collaborator

zeromake commented Feb 16, 2023

@xfangfang
fmt 找到为啥了,9.1.0 不支持 unsigned char* 作为参数了
fmtlib/fmt#3307

tweeny 是打包的 .h 里漏掉了 #include <string>

@xfangfang
Copy link
Owner

xfangfang commented Feb 16, 2023

borealis里面的库究竟是什么版本我也不是很清楚,原作者好像是直接把代码复制进来的样子。

或者是原作者是使用他在readme提及的subrepo来维护的外部项目:https://github.com/ingydotnet/git-subrepo

我在后续的开发中,外部依赖应该只调整了nanovg,glad和glfw。

nanovg是跟着官方最新版更了一下,并且又手动更新了stb_image 和 stb_truetype
(也可以直接使用官方的最新版本,有极少数图片会加载不出来,我之前发现过一次所以就自己更新了一下)

glad是手动增加了几个opengl 2.1的定义

glfw的修改目的是让pc端支持输入法,官方的版本目前还不支持

相比于原版borealis增加了sdl2的支持,不过sdl2我没有实现对应的输入法支持


相当期待实现的那一天!
加油,有任何问题或者是代码上我写的不明确的地方随时联系,我如果超过了24小时还没回复,可能是不小心错过了通知(之前发生过几次),可以随时重新@ 我。

@zeromake
Copy link
Collaborator

@xfangfang
yoya 搞定了,用最新的 main 分支就行了,不过 event 被放到 facebook 命名空间下了,我先实现一下 glfw 的 nanovg dx11 demo 吧,winrt 窗口必须要 vs 项目编译,还没找到 cmake 支持的。

@zeromake
Copy link
Collaborator

zeromake commented Feb 16, 2023

@xfangfang
人在公司只有 macbook,先拿 nanovg 的 metal 实现练了个手,问题不大就是两个地方

  • 一个是 glfw 在 cocoa 上的鼠标事件不需要乘 scaleFactor(鼠标点击飞的莫名奇妙)。
  • 还有一个是 nvgBeginFrame 最后一个参数在 cocoa 上该用 scaleFactor 而不是 pixelRatio(无法铺满全部窗口,点击也会错位)。

commit

现在有个问题,我在 glfwWindowFramebufferSizeCallback 需要访问在 GLFWVideoContext::GLFWVideoContext 里创建的变量,现在是用全局变量搞的,Application::getPlatform()->getVideoContext() 的话貌似还没设置上。

@xfangfang
Copy link
Owner

xfangfang commented Feb 16, 2023

@zeromake

鼠标点击的问题 有一个需要注意的点(我不确定metal有没有类似的问题,看代码里的注释说是不需要判断dpi,但还是提一嘴),OpenGL mac 下 鼠标点击要注意不同屏幕下的区别,开启了 hidpi 之后的屏幕和未开启 hidpi 是不一样的。


Application::getPlatform()->getVideoContext() 的话貌似还没设置上

可能是因为 VideoContext 构造函数里调用了 glfwWindowFramebufferSizeCallback,导致的这个问题,之前我好像也是直接弄的全局变量。

一个简单的修复是,可以试一试在 VideoContext 构造函数里使用下面的方法来初始化窗口大小(使用sync包裹一层):

#include <borealis/core/thread.hpp>
// 修改前

// Setup scaling
int width, height;
glfwGetFramebufferSize(window, &width, &height);
glfwWindowFramebufferSizeCallback(window, width, height);
int xPos, yPos;
glfwGetWindowPos(window, &xPos, &yPos);
glfwWindowPositionCallback(window, xPos, yPos);

// 修改后

brls::sync([this](){
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    glfwWindowFramebufferSizeCallback(window, width, height);
    int xPos, yPos;
    glfwGetWindowPos(window, &xPos, &yPos);
    glfwWindowPositionCallback(window, xPos, yPos);
});

brls::sync 会在主循环里执行,在这种情况下,就是 VideoContext 创建好之后的第一次循环立刻执行。

(感觉好像有些丑陋,或者是把上面这段搞个函数,然后放在 GLFWPlatform::createWindow 中初始化 VideoContext 后调用一下)

@zeromake
Copy link
Collaborator

@xfangfang 搞定了 sdl 的 uwp 了,打包和编译还是有些问题(现在是手动拼命令去执行的),我和 xmake 作者讨论一下怎么自定义支持 winrt 编译吧。
image

@xfangfang
Copy link
Owner

@zeromake 好消息!

我如果通过增加编译选项把mpv的画面绘制从现在的opengl改到支持软件渲染,然后直接调用nanovg的api来绘制会不会对你后面的开发方便一些?
虽然软件渲染性能不佳,不过可以作为保证能用的后备方案,如果需要的话我最近可以搞一下。

@zeromake
Copy link
Collaborator

@xfangfang
我个人觉得不如直接上 ANGLE 算了,不过也是一种方案,你先搞着,我去看看 mpv 的 dx11 能不能整不能先搞个 ANGLE。

@zeromake
Copy link
Collaborator

@xfangfang
winrt 有一个 cppwinrt 比那 vs 的一把 winmd 方便多了,不过现在有一个问题 winrt 需要包装启动函数,现在需要在 main 后面导入一个头文件比较麻烦,考虑去抄一下 sdl_main 的方式。

@xfangfang
Copy link
Owner

xfangfang commented Feb 27, 2023

@zeromake

我刚刚做了一下 mpv 软件渲染的支持:278977e

编译时添加宏定义: MPV_SW_RENDER 即可。

另外还有一个宏定义是之前为了支持树莓派写的:MPV_NO_FB,设置了这个之后,在 OpenGL下 mpv 会直接绘制到屏幕上,而不是先绘制到一个自定义的framebuffer上再贴到屏幕上。

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

@xfangfang
uwp 用 mpv 软件渲染跑起来了,但是 mpv 播放有问题,win32 的时候就没问题。
我看看替换为我自己编译的 mpv 试试吧,不行应该还是要走 dx 的渲染,dx 的 mpv 的 dll 我也已经编译出来了。
图片

@xfangfang
Copy link
Owner

@zeromake
非常棒!

这个问题有可能是mpv的某些设置导致的,在 software-render 分支可以先删除这条(我不确定这一条和软件渲染有没有关系,但是删除了mpv也会自动识别,所以影响不大,这一条最开始是尝试在switch上降低功耗增加的,本来就可以删掉):

mpv_set_option_string(mpv, "fbo-format", "rgba8");

然后在这里修改 PIXCEL_SIZE 和 sw_format:

#ifdef MPV_SW_RENDER
const int PIXCEL_SIZE = 4;
int nvg_image = 0;
const char *sw_format = "rgba";
int sw_size[2] = {1920, 1080};
size_t pitch = PIXCEL_SIZE * sw_size[0];
void *pixels = nullptr;
mpv_render_param mpv_params[5] = {
{MPV_RENDER_PARAM_SW_SIZE, &sw_size[0]},
{MPV_RENDER_PARAM_SW_FORMAT, (void *)sw_format},
{MPV_RENDER_PARAM_SW_STRIDE, &pitch},
{MPV_RENDER_PARAM_SW_POINTER, pixels},
{ MPV_RENDER_PARAM_INVALID,
nullptr }};

可能出现的设置可以是:rgba8, bgra8, rgb10_a2, rgba16...... 具体内容可以直接在mpv的仓库里搜搜代码,这个我也没找到文档。

这里该怎么设置,应该和 nanovg 使用的像素格式相关。

我在写的时候就想着可能这里会有问题,但是也不确定就没写成宏定义。


我另外又发现了一种可能的mpv嵌入窗口的方式,不过还需要实际验证一下。
通过设置窗口的id来嵌入:https://mpv.io/manual/stable/#options-wid

使用到了这个选项的相关的代码有:

https://github.com/mpv-player/mpv-examples/blob/bd0b42e5bd47c22592760a244f80e49ec0222892/libmpv/qt/qtexample.cpp#L72-L79

https://github.com/mpvnet-player/mpv.net/blob/16d6e4d4710b4104066dfb7595981fdb0f99587e/src/Misc/Player.cs#L142-L143

我有点想在mac上使用这个方式改到 vulkan 或者 metal,因为我发现升级了macOS13之后 OpenGL 开发的应用 vsync 失效了,或者还有什么其他问题,结果就是GPU占用极高。

感觉马上就都搞好了,加油!!!

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

@xfangfang
注释了 fbo-format 发现完全没有变化。
试了一些 sw_format
黑屏:auto, bgra8, rgb10_a2, rgba16, rgb0, bgr0, 0bgr
上面的截图情况: rgba,0rgb
大部分视频黑屏有些视频能显示和上面的截图类似但是颜色明显对不上:rgba8
结论:完全没有一个能正常显示的。

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

顺便一提,win32 下也是一样的问题,之前没问题应该是忘记重新编译了。

@xfangfang
Copy link
Owner

感觉也有可能是 PIXCEL_SIZE 的问题,看画面颜色好像没问题,或许改到8或者16试一试?

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

@xfangfang 改过了,改的越大内容越少,改小直接内存访问异常
屏幕截图 2023-03-08 225017

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

切到 opengl 是可以的,dx11 就不行了。

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

翻了 sdl 的 dx11 texture 渲染,搞定了

@xfangfang
Copy link
Owner

完美啊,这效率也太高了

@zeromake
Copy link
Collaborator

zeromake commented Mar 8, 2023

@xfangfang 试了一下 winrt 发现不行,应该是又手抖把 opengl 看成 dx11 了……,不过找到 sdl 的示例了应该不远了

@zeromake
Copy link
Collaborator

@xfangfang 你有空可以改成裁剪图片的方式来支持缩小的逻辑,我就先这样处理吧,实际上拖拽放大的过程中确实看到了多次触发。

@xfangfang
Copy link
Owner

xfangfang commented Mar 17, 2023

@zeromake
更新一下进展,我这几天一直在看 borealis 的代码, 现在可以跑起来 demo 了, 这两天有空的时候在写cmake的脚本。

因为我对 vc 那一套不是很了解,一直想用 msys2 来编译,部分代码整合了之后才发现用 msys2 的话 windows SDK 链接不进来。
这样的话就需要再研究一下 vc 和 cmake 相关的内容,同样因为我没用过 vc 所以需要花点时间来看。


防抖动的问题,从 borealis 那里解决了一下:xfangfang/borealis@7d25b24


uwp的支持有点想单独开个分支来维护了,感觉代码变更的有点多,把这么多内容合并进来还是比较耗时间的(再次给大佬点赞👍)
因为未来软件不会做特别复杂的修改了,以简单维护为目标,所以单独搞个分支貌似工作量就小很多了。如果您愿意维护的话,我可以邀请您进项目的管理。

未来几天的时间,我准备先去解决一下 部分视频点赞投币失效 和 windows 上 glfw 触摸的问题。

@zeromake
Copy link
Collaborator

@xfangfang

我有空帮你做一下 cmake 支持吧,我把那个窗口 dpi 缩放窗口的逻辑去掉(效果也不是很好),剩下的改动就全部是兼容代码了(各种库的更新兼容,fmtlib 的 c++20兼容,msvc兼容)和 sdl + dx 适配,我还是比较希望合并到主分支的(否则写那么多代码有点浪费)。

不过最近要找租房,不是非常有空。

第一步还是先做为一个分支到 wiliwili 仓库里吧,你先把我拉进去吧。

@xfangfang
Copy link
Owner

@zeromake

万分感谢,已经邀请了

@cirfi
Copy link

cirfi commented Mar 17, 2023

哇!期待 Xbox 版!

@zeromake
Copy link
Collaborator

@xfangfang
都整到 uwp 分支里了,看了一下 微软的开发者账号费用,还挺麻烦的。
#100
xfangfang/borealis#4

@xfangfang
Copy link
Owner

@zeromake 万分感谢

我对uwp和微软这些不是特别了解,我理解的意思是,咱们现在已经有可以安装的安装包了,如果上架到应用商店就可以让大家直接在 xbox和windows上下载使用了。

感觉他这一套要做的事还不少,看来我们需要一个有类似经验的朋友,或者已经有开发者账号愿意帮忙提交的朋友了。

@zeromake
Copy link
Collaborator

@xfangfang
嗯,看了一下 AppCertKit 的校验,有一把 win32 api 不允许使用,curl 的 wldap32 的我可以加个选项关闭掉,mpv 的话记得有兄弟搞了 uwp 专用的 dll,我先把这些搞定。

@zeromake
Copy link
Collaborator

@xfangfang
curl 的 ldap 关掉了,找了一些 mpv 在 .net uwp 的 dll,都是有引用 uwp 不可用的 win32 api,应该是对上架无影响的。

@zeromake
Copy link
Collaborator

@xfangfang
整理了一下把原来开发中的删除的 cmake 的 gitmodules 重新整回来了,现在没有什么额外代码变更了,代码可以考虑跑一下 ci 看看其它平台的编译没有问题的话可以考虑合并到主分支,虽然说是要做 cmake 试了一下太麻烦了,xmake 单独用来编译 winrt 就行了。

https://github.com/xfangfang/borealis/compare/wiliwili...xfangfang:borealis:uwp?expand=1
https://github.com/xfangfang/wiliwili/compare/yoga...uwp?expand=1

@xfangfang
Copy link
Owner

@zeromake 非常感谢
之前的一次更新支持了webp:24af319
添加宏定义 USE_WEBP 后就会加载webp图片,如果需要的话可以在xmake里引入一下webp。

我最近在做几个修改,包括:重写一下搜索页(正在做)、完善评论区图片显示、优化一下图片缓存的方式和直播弹幕(有可能不做,主要看switch那边好不好做)

上面说的这几个修改做好之后我再来合并您的代码如何?这期间如果方便的话可以研究研究 winrt 的 ci,这样合并之后如果出了什么问题也能快速发现。如果winrt客户端编译比较慢的话不需要和现有的放在一起,单独放一个文件也可以。

刚刚跑了一下,似乎出了点问题:https://github.com/xfangfang/wiliwili/actions/runs/4783311777/jobs/8503466226

应该是 fmt::runtime 的问题,这里为什么要加他呢?

@zeromake
Copy link
Collaborator

@xfangfang 这个问题 borealis 需要先合并进去,fmt::runtime 是 c++20 的 libfmt 的静态推导(msvc c++17 没有 struct 命名初始化,在 c++20 才有。),我可以改成: brls::Logger::debug("{}", "wiliwili/mine/login/success"_i18n) 来兼容。

@xfangfang
Copy link
Owner

@zeromake 如果只是在输出log里_i18n存在问题的话,可以直接删除那些内容,当然有时间的话改一下来兼容更好啦,我之后再看看哪些可以删除。

borealis 的部分我在本地跑了一下是没啥大问题的(cmake加条 -DBOREALIS_USE_OPENGL 就行),有一个小疑问是,我看到最后一次提交删除了 GLFW_SOFT_FULLSCREEN,我没有具体测试过这个参数的效果,但是据原作者说,如果加上了这个可以在全屏时让输入法显示在窗口之上:clear-code/glfw@36ff2b3

@zeromake
Copy link
Collaborator

@zeromake 如果只是在输出log里_i18n存在问题的话,可以直接删除那些内容,当然有时间的话改一下来兼容更好啦,我之后再看看哪些可以删除。

borealis 的部分我在本地跑了一下是没啥大问题的(cmake加条 -DBOREALIS_USE_OPENGL 就行),有一个小疑问是,我看到最后一次提交删除了 GLFW_SOFT_FULLSCREEN,我没有具体测试过这个参数的效果,但是据原作者说,如果加上了这个可以在全屏时让输入法显示在窗口之上:clear-code/glfw@36ff2b3

我以为是不知道哪里来的代码看yoga 分支 diff 里没有就给删了

@xfangfang
Copy link
Owner

@zeromake 好的呀,那我先把上一条提交合并进 wiliwili 分支啦?

@zeromake
Copy link
Collaborator

@zeromake 好的呀,那我先把上一条提交合并进 wiliwili 分支啦?

好的,我明天把它 reset 掉

@zeromake
Copy link
Collaborator

@xfangfang
ci 通过了:
https://github.com/xfangfang/wiliwili/actions/runs/4793088946
code 变更我也再看过了一遍:
https://github.com/xfangfang/wiliwili/compare/yoga...uwp?expand=1
我等等再搞个 github action 手动触发测试编译 uwp 应用。

@xfangfang
Copy link
Owner

xfangfang commented Apr 25, 2023

@zeromake 太棒啦
关于mpv那个位置可能还有点小问题

一个是之前说过的:

-if (pixels != nullptr && frameSize > sw_size[0] * sw_size[1])
+if (pixels != nullptr && frameSize != sw_size[0] * sw_size[1])

这里之前这么改是因为我把 nvgCreateImageRGBA 和 pixels 的创建放在一起了,会导致 frameSize 减小时 nanovg生成的纹理尺寸不会更新,后来我把 nvgCreateImageRGBA 单独放置,就应该不存在这个问题了,写成 > 可以稍微减少一点内存申请的次数。

另外一个问题是:

+const static int mpvImageFlags = NVG_IMAGE_STREAMING|NVG_IMAGE_COPY_SWAP;

这两个flag应该是自定义的,nanovg默认下是没有的。虽然以后也不一定会用到这个功能,但是万一之后迁移到其他平台还是可以用来作为备选方案的,所以这里最好加个判断。

还发现多了一个 demo/sw.c 这个是不是误传的呀?

感觉这几个小问题解决之后,我就可以直接合并到 wiliwil dev 分支啦。

@xfangfang
Copy link
Owner

@zeromake 貌似还有一个问题,dev分支还有点东西没有合并进uwp分支,如果方便的话也可以先合并进去

@xfangfang
Copy link
Owner

@zeromake 我刚刚把最近的更新推送到dev分支了,如果没在做前面说的这些事的话,我可以现在花点时间来合并一下uwp分支,如何?

@zeromake
Copy link
Collaborator

@xfangfang 在搞了,处理 dev 冲突……

@zeromake
Copy link
Collaborator

@xfangfang
Copy link
Owner

@zeromake 好的,我又确认了一下,都很完美,已经合并啦

@xfangfang
Copy link
Owner

xfangfang commented Apr 25, 2023

@zeromake borealis glfw_video.cpp 出现一个小问题,这个是我之前写出来的问题,我想做个修改,但是不知道会不会影响到 D3D11 或者 METAL 。

/// glfw_video.cpp line 336

    // Setup window state
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    Application::setWindowSize(width, height);

#if defined(BOREALIS_USE_D3D11) || defined(BOREALIS_USE_METAL)
#else
    int wWidth, wHeight;
    glfwGetWindowSize(window, &wWidth, &wHeight);
    scaleFactor = width * 1.0 / wWidth;
#endif

    int xPos, yPos;
    glfwGetWindowPos(window, &xPos, &yPos);
    Application::setWindowPosition(xPos, yPos);

    if (!VideoContext::FULLSCREEN)
    {
        VideoContext::sizeW = width;
        VideoContext::sizeH = height;
        VideoContext::posX = (float)xPos;
        VideoContext::posY = (float)yPos;
    }

VideoContext 的四个值用来储存非全屏下的窗口状态,这里宽度和高度错误的使用了 Framebuffer 的宽和高,我在mac下会出现原本窗口 1280x720 但是却保存了 2560x1440,这个会导致下次启动时窗口大小错误。(但是刚好我这里显示器不够大,所以下次启动时都因为放不下窗口而重置了窗口大小和位置,所以一直没有发现)

我想要做的修改是这样的:

    // Setup window state
    int width, height;
    glfwGetFramebufferSize(window, &width, &height);
    Application::setWindowSize(width, height);

    int wWidth, wHeight;
    glfwGetWindowSize(window, &wWidth, &wHeight);

    int xPos, yPos;
    glfwGetWindowPos(window, &xPos, &yPos);
    Application::setWindowPosition(xPos, yPos);

#if defined(BOREALIS_USE_D3D11) || defined(BOREALIS_USE_METAL)
#else
    scaleFactor      = width * 1.0 / wWidth;
#endif

    if (!VideoContext::FULLSCREEN)
    {
        VideoContext::sizeW = wWidth;
        VideoContext::sizeH = wHeight;
        VideoContext::posX  = (float)xPos;
        VideoContext::posY  = (float)yPos;
    }

@zeromake
Copy link
Collaborator

@xfangfang d3d11 和 metal 都是Framebuffer和WindowSize相同的,应该是没影响,靠的是 scaleFactor。

@xfangfang
Copy link
Owner

@zeromake 好的~

@zeromake
Copy link
Collaborator

zeromake commented Apr 30, 2023

@xfangfang
顺便一提现在,nanovg 在我自己的仓库里,我看 borealis 有时会修改 nanovg,我把 dx 和 metal 也同步到 borealis 的 library/include/borealis/extern ?感觉不是很好啊,要不整个新仓库?

@xfangfang
Copy link
Owner

@zeromake 我都没意见,怎么方便怎么来。(我估计之后修改他的频率不会特别高)

nanovg那个修改不是很关键,原版的 nanovg 分行的时候会自动去掉首行的空格,在评论区偶尔会显示的不太一样。我就微调了一下,想着等之后什么时候顺便再说来着。

@thedavidweng
Copy link

插个眼 希望还有人记得

@xfangfang
Copy link
Owner

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

7 participants