2017-06-15 4 views
1

J'essaie de charger une texture dans mon application en utilisant SDL. Lors de la construction en tant qu'application native, cela fonctionne comme il se doit. Mais quand je construis avec Emscripten, la texture ne peut pas être chargée.Comment charger des textures en utilisant SDL dans un projet WebAssembly en utilisant emscripten?

La largeur de l'image de texture est pixels, que je peux vérifier en imprimant le membre w de l'instance SDL_Surface. Mais lorsque je tente d'imprimer le même membre dans l'application WebAssembly, il donne ...

Est-ce que l'image devient « cassé » en quelque sorte emballé avec emscripten?

Voici le code pour charger la texture:

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); 

est ici la commande pour construire l'application Web avec emscripten

emcc --bind -s USE_SDL=2 -s USE_SDL_IMAGE=2 -o webapp.js src/webapp.cpp --preload-file resources 

Le message d'erreur que je reçois le navigateur lors du lancement du web L'application est

webapp.js: 9533 WebGL: INVALID_VALUE: texImage2D: largeur ou hauteur hors limites

Ce qui est logique, puisque la résolution de l'image est si fou ...

Répondre

2

Il s'avère que je devais utiliser --use-preload-plugins lors de l'exécution EMCC pour créer le fichier de pré-charge. Enfin, la commande ressemble à ceci:

emcc --bind -s USE_SDL=2 -s USE_SDL_IMAGE=2 -o webapp.js src/webapp.cpp --preload-file resources --use-preload-plugins