Как избежать проблем междоменной безопасности, чтобы нарисовать изображение профиля Facebook на холсте WebGL? - PullRequest
0 голосов
/ 08 сентября 2011

Я экспериментирую с написанием игры для Facebook на HTML5 и сталкиваюсь с недавними изменениями безопасности в Chrome, которые запрещают рисование любых междоменных изображений на холсте WebGL.Я не эксперт по WebGL, и я надеюсь, что есть какой-то способ сделать это, который я пропускаю.

Например, можно ли использовать как 2D-холст, так и WebGL3D холст, в то же время?Это один из способов обойти эту проблему ...

Вот еще несколько подробностей:

В моей игре я хочу нарисовать фотографию профиля пользователя из Facebook.Фотография легко доступна по адресу http://graph.facebook.com/[username]/picture.. Однако она помечается как междоменная картинка, и поэтому это изображение не может использоваться в качестве текстуры WebGL.

Вот упрощенная версия кода, вызывающая ошибку:

var anImage = new Image();
anImage.src = "http://graph.facebook.com/notreallytheusername/picture";

... ожидание загрузки изображения ...

var texture = gGL.createTexture();
gGL.bindTexture(gGL.TEXTURE_2D, texture);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, anImage);

последнийстрока выше вызывает исключение DOM безопасности ...

какие-либо предложения, как этого избежать?Как нарисовать фотографию на Facebook поверх высокопроизводительной игры WebGL?

1 Ответ

1 голос
/ 09 сентября 2011

Вы не сможете нарисовать картинку, если сайт, обслуживающий изображение, не включит запрос перекрестного источника через заголовки CORS в ответе (что Facebook не делает). Кроме того, это поведение не характерно для Chrome; это требуется текущей спецификацией WebGL . Вы можете найти больше информации о причинах и последствиях изменения в этом блоге Chrome .

...