2017-06-15 85 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 
相關問題