Autor Wątek: tekstury w WebGL  (Przeczytany 1670 razy)

Offline kuman

  • Użytkownik

# Styczeń 23, 2015, 15:44:55
Witam

Mam przykładową funkcję służącą do ładowania tekstury w WebGl
var webGLTexture;

    function initTexture(gl) {
    webGLTexture = gl.createTexture();
    webGLTexture.image = new Image();
     
    webGLTexture.image.onload = function () {
            handleTextureLoaded(gl, webGLTexture)
        }

    webGLTexture.image.src = "webgl-logo-256.jpg";
    }


funkcja działa poprawnie tylko jak zamienię webGLTexture.image.src = "webgl-logo-256.jpg"; na
webGLTexture.image.src = "../images/webgl-logo-256.jpg"; to wywala mi błąd:

Error: WebGL: It is forbidden to load a WebGL texture from a cross-domain element that has not been validated with CORS. See https://developer.mozilla.org/en/WebGL/Cross-Domain_Textures

Wszedłem na podaną w errorze stronę i według wskazówek dopisałem do kody wiersz:
webGLTexture.image = "anonymous";

ale nic to nie pomogło. Wiecie jak naprawić ten błąd?


Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Khazad

  • Użytkownik

  • +2
# Styczeń 23, 2015, 16:49:29
Przede wszystkim musisz pracować na lokalnym serwerze, nie możesz po prostu odpalać pliku html z dysku w przeglądarce. Po drugie pamiętaj że ścieżki w js są względne do pliku html w którym ten skrypt wywołujesz.

Offline kuman

  • Użytkownik

# Styczeń 23, 2015, 17:01:34
Dzięki

Offline rastabaddon

  • Użytkownik

# Styczeń 24, 2015, 17:31:53
Znam ten problem.
Rozwiazanie jest nastepujace poza ustawieniem klienta(przegladarki)
Wymagana jest rownierz prawidlowa odpowedz serwerera ktory musi zezwolic na pobieranie obrazkow(tekstor) i osadzanie ich na stronach z poza domeny.


Serwer powinien odpowiadac z nastepujacymi naglowkami:

Access-Control-Allow-Origin *

w zaleznosci od przegladarki calosc moze wymagac dodatkowych naglowkow po stronie przegladarki jak i servera. Najwiecej problemow z Cross-Domain jest z IE. Najlagodniej do tego podchodzi firefox.

Szukaj w google opisu Cross-Domain.
Np firefox:
https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image



Offline PsichiX (ΨΧΞ)

  • Użytkownik
    • PsichiX Website

# Styczeń 26, 2015, 13:35:21
@kuman:
webGLTexture = gl.createTexture();
webGLTexture.image = new Image();
Specyfikacja WebGL mówi, byś NIGDY, ale to NIGDY nie umieszczał żadnych dodatkowych propertiesów w obiektach WebGLowych. Nigdy.