2014-02-01 5 views
2

Я много работал с webgl allready, но теперь его первый раз, используя дротик и ive, попал в странную ошибку. Я создаю текстуру по умолчанию, как это:mipmap текстура отображается неправильно

GlTexture() { 
    mTexture = gl.createTexture(); 
    updateMemory(1, 1, new Uint8List.fromList([0x00, 0x00, 0xFF, 0xFF])); 
    } 

где updateMemory составляет:

void updateMemory(int width, int height, Uint8List colors, [ bool genMipMaps = true ]) { 
    gl.bindTexture(TEXTURE_2D, mTexture); 
    gl.texImage2DTyped(TEXTURE_2D, 0, RGBA, width, height, 0, RGBA, UNSIGNED_BYTE, colors); 
    if(genMipMaps) { 
     gl.generateMipmap(TEXTURE_2D); 
    } 

    gl.bindTexture(TEXTURE_2D, null); 
    } 

Эта текстура визуализируется прекрасно, как синий квадрат. Однако, если я изменить updateMemory вызов к чему-либо, кроме 1х1 текстуры результаты будут совершенно неправильно, позвольте мне показать вам пример:

GlTexture() { 
    mTexture = gl.createTexture(); 
    updateMemory(2, 2, new Uint8List.fromList([0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0x3F, 0x7F, 0xFF, 0xFF]), true); 
    gl.bindTexture(TEXTURE_2D, mTexture); 
    gl.texParameteri(TEXTURE_2D, TEXTURE_MIN_FILTER, LINEAR_MIPMAP_NEAREST); 
    gl.bindTexture(TEXTURE_2D, null); 
    } 

И результат выглядит следующим образом:

enter image description here

В то время как структура 2х2 видна, остальное просто неверно. Если необходимо, я также могу предоставить шейдеры.

/EDIT: Когда я установить текстуру с содержанием изображения визуализации выглядит следующим образом:

enter image description here

Текстура сама по себе оказывается правильно, но MIP-уровень является своего рода неправильно.

ответ

1

Предполагая, что код выполняет код generateMipMap в коде, поэтому генерируются mipmaps. Как насчет настройки TEXTURE_MAG_FILTER? Кроме того, могут возникать проблемы с масштабированием CSS, связанным с размером видового экрана GL, и тем, что CSS пытается окончательно масштабировать до дисплея.

EDIT: Если вы хотите установить ширину/высоту холста в соответствии с окончательной шириной/высотой экрана?

+0

Хотя я все еще не мог получить текстуру 2x2, вторая проблема действительно была вызвана чем-то внутренне неправильным с холстом. После некоторых изменений в CSS и моем коде ширина/высота, по-видимому, передаются правильно, и поэтому матрица проецирования в порядке. – Cromon

Смежные вопросы