寻找调整来自 Emscripten 的 SDL2 窗口/画布大小的正确方法。目前,我在 JS“resize”事件上添加一个事件侦听器,并将 Canvas 父级的客户端宽度 + 高度发送到 Emscripten,然后更新在每次渲染时调用的宽度和高度变量。
这会产生奇怪的结果 - 比例始终关闭,实际可用的 SDL2 区域没有更改,并且指针事件不再与 SDL 对齐。
我的窗口大小变量是:
int canvasWidth = 800;
int canvasHeight = 600;
Run Code Online (Sandbox Code Playgroud)
这是我的初始化代码:
void Init()
{
int i;
for (i = 0; i < 256; i++)
gPressed[i] = gWasPressed[i] = 0;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE) < 0)
{
fprintf(stderr, "Video initialization failed: %s\n", SDL_GetError());
SDL_Quit();
exit(0);
}
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 5);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
int flags = SDL_WINDOW_OPENGL | …Run Code Online (Sandbox Code Playgroud)