如何使用 emscripten 使用 SDL 将纹理加载到 WebAssembly 项目中
How to load textures using SDL to a WebAssembly project using emscripten?
我正在尝试使用 SDL 将纹理加载到我的应用程序中。作为本机应用程序构建时,它可以正常工作。但是当我使用 Emscripten 构建它时,无法加载纹理。
纹理图像的宽度为 64 像素,我可以通过打印出 SDL_Surface 实例的w
成员来验证。但是当我尝试在 WebAssembly 应用程序中打印出相同的成员时,它会产生 5076...
当包含 emscripten 时,图像会以某种方式"损坏"吗?
下面是加载纹理的代码:
SDL_Surface *image = IMG_Load("resources/binaries/crate.jpg");
GLuint textureID;
glGenTextures(1, &textureID);
glBindTexture(GL_TEXTURE_2D, textureID);
std::cout << image->w << std::endl;
glTexImage2D(GL_TEXTURE_2D, 0, 3, 64, 64, 0, GL_RGB, GL_UNSIGNED_BYTE, image->pixels);
以下是使用 Emscripten 构建 Web 应用程序的命令
emcc --bind -s USE_SDL=2 -s USE_SDL_IMAGE=2 -o webapp.js src/webapp.cpp --preload-file resources
启动 Web 应用程序时收到浏览器的错误消息是
webapp.js:9533 WebGL:INVALID_VALUE:texImage2D:宽度或高度超出范围
这是有道理的,因为图像的分辨率太疯狂了......
事实证明,
在执行 emcc 创建预加载文件时,我必须使用 --use-preload-plugins
。最后,该命令如下所示:
emcc --bind -s USE_SDL=2 -s USE_SDL_IMAGE=2 -o webapp.js src/webapp.cpp --preload-file resources --use-preload-plugins
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 无法使用加载库卸载注入的 dll (C++)
- 是否有原子加载非原子值的函数?
- 将 bmp 文件加载到 TSpeedButton 中
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 如何使用 emscripten 使用 SDL 将纹理加载到 WebAssembly 项目中