2017-06-15 44 views
1

我试图使用SDL将纹理加载到我的应用程序。当作为本地应用程序构建时,它应该像它应该那样工作。但是当我用Emscripten构建它时,无法加载纹理。如何使用emscripten将使用SDL的纹理加载到WebAssembly项目?

纹理图像的宽度是像素,我可以通过打印出SDL_Surface实例的w成员来验证。但是,当我尝试在WebAssembly应用程序打印出相同的成员,它产生 ...

是否图像变得莫名其妙当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

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:宽度或高度超出范围

这是有道理的,因为图像的分辨率是如此疯狂...

回答

2

原来我不得不执行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 
相关问题