如何检索 Emscripten canvas 的 in-browser 大小?

How to retrieve in-browser size of Emscripten canvas?

我研究这个已经有一段时间了,但我似乎找不到如何实现它。

有一个标题非常明确的 emscripten_get_canvas_size,它与我期望的不同。实际的 Emscripten canvas 元素已设置为具有 100% 的宽度和高度,但是如果我通过 emscripten_get_canvas_size 检索宽度和高度,我只是简单地获取 GLFW [=33] 的宽度和高度=] 显示在 canvas 内,而不是 canvas 将其缩放到的实际尺寸。

我想获得浏览器中显示的实际 canvas 大小,以便我可以调用 glfwSetWindowSize 来缩放视口以填充整个浏览器 window。

即使我将 canvas 设置为 100x100px,emscripten_get_canvas_size 只有 returns 我在程序开始时通过 glfwSetWindowSize 设置的 1920x1080。

我可能遗漏了一些明显的东西,但是什么?

我对使用 Emscripten 进行 GUI 编程的知识为零,但您可以创建自己的函数来获得 HTML canvas 大小。例如:

// These are JavaScript code in C/C++ file
#include <emscripten.h>
EM_JS(int, canvas_get_width, (), {
  return yourCanvasElement.width;
});

EM_JS(int, canvas_get_height, (), {
  return yourCanvasElement.height;
});

// Then call
int width = canvas_get_width();
int height = canvas_get_height();

您可以在 the official document.

的 C/C++ 代码中学习如何创建 JS 代码