nenge123 / emulatorjs

https://emulatorjs.com/
15 stars 12 forks source link

fbneo_libretro.wasm 中没有设置宽高比的方法吗? #10

Closed rexhang closed 1 year ago

rexhang commented 1 year ago

我想知道游戏核心是否提供了渲染比例或填充画布容器的宽度和高度的选项?

image

如上图所示,画布的宽度和高度设置为200:120,但是渲染出来的游戏画面只有4:3,并且画布容器没有被覆盖。核心是否提供了改变渲染比例的方法?

image

在Module对象中没有找到对应的方法

希望您能给我答复,非常感谢。

nenge123 commented 1 year ago

首先设置画布css 如手机竖屏时 width:100% !important;height:auto !important; 横屏时反过来。 但是你也可以设置特定宽。

强制修改,找到Module.callMain 下一行加入Module.setCanvans(width,height) 如160x5,140x5注意纵横比,值越大越清晰

智能方式,具体你要看控制台输出“video 160x140”这种关键字。 查找Module = 然后往下找到printErr(text) 增加语录判断 if(/vidoe\s\d+x\d+/.test(text)){ var wh = (text.match (vidoe\s*(\d+x\d+)))[1].split('x'); wh = wh[0]/wh[1]; Module.setCanvans(720,720/wh); 最好把wh值保存下來 如Module.wh=wh }

如果在ejs里面,还需要进一步修改 查找 setCanvans 你就会发现它在callMain后其实调整了纵横比, 因此你可以选择删掉所有setCanvans

也可以在局部函数里面语句最后加上,推荐

Module.setCanvans(720,720/Module.wh); 因为它有resize事件,

nenge123 commented 1 year ago

打错了,是这个 setCanvasSize

nenge123 commented 1 year ago

设置里面的宽高相当于分辨率,越大越清晰(像素),越小越模糊。 而设置画布css,要用important ,相当于你的显示屏多少寸 显示屏纵横比要和分辨率一致,否则畸形画面

rexhang commented 1 year ago

image

image

rexhang commented 1 year ago

image

image

最终是去调用 updateCanvasDimensions

updateCanvasDimensions

rexhang commented 1 year ago

image image

最终是去调用 updateCanvasDimensions

updateCanvasDimensions

image

image

rexhang commented 1 year ago

这里没有对游戏画面的比例进行调整 调整的只是canvas的宽高

image

rexhang commented 1 year ago

image

rexhang commented 1 year ago

image

抓取到相关信息,然后查看调用堆栈,没有找到关于视频 video size 的设置

rexhang commented 1 year ago

最终尝试了下,只能够修改canvas尺寸信息,无法修改渲染范围(例如铺满整个canvas 从0,0 到 canvas.width, canvas.height)

nenge123 commented 1 year ago

感觉你喺度语无伦次。怎么就没填满了? 还有就是我给你的是例子,你控制台给你的是800多,而你缩放720其实是在放小。

控制台给你的是游戏分辨率,Html画布(canvan)。

保持纵横比全屏情况下,那么游戏就会填满画布的每一格,如果画布宽多了10像素,那么显示结果是图像左右有5像素黑边。

如果不保持纵横比满屏幕情况下,一但纵横比相差太大,就是畸形画面。

…………

还有css方面,当网页宽远远大于高时。自适应情况下,画布应该高与网页一致,而两侧会有画布与网页两侧黑边,这是你所谓的没填满??? 你想这个填满很简单,把画布width从auto设置100%即可!

nenge123 commented 1 year ago

你要验证自己问题很简单,给画布设置背景色红色,给id=game 设置白边。看到红是画布没填满,看到白边是画布没占满网页屏幕

nenge123 commented 1 year ago

這個比例是設置html 實現。

imageimage image

rexhang commented 1 year ago

image

我给canvas设置了背景 但是游戏在里面还是没渲染满

rexhang commented 1 year ago

這個比例是設置html 實現。

imageimage image

你的是可以的