В настоящее время я работаю над WebGL, чтобы выполнить постобработку 2D-изображения. Проблема возникает, когда я пытаюсь использовать API copyTexImage2D для отправки исходной текстуры во фрагментный шейдер с использованием размеров дисплея устройства, в результате чего получается сплошная черная текстура, если я искусственно не добавляю какое-либо положительное число, превышающее единицу, что заставляет меня полагать, что проблема возникла из-за какого-то какая-то проблема с округлением. Интересная часть проблемы: она эксклюзивна для платформы Android и не воспроизводится на платформах iOS, OSX, Windows в разных браузерах.
Вот фрагмент моего кода, который копирует пришедшую сцену. из MapLibre в переменную renderTexture.
В настоящее время я работаю над WebGL, чтобы выполнить постобработку 2D-изображения. Проблема возникает, когда я пытаюсь использовать API copyTexImage2D для отправки исходной текстуры во фрагментный шейдер с использованием размеров дисплея устройства, в результате чего получается сплошная черная текстура, если я искусственно не добавляю какое-либо положительное число, превышающее единицу, что заставляет меня полагать, что проблема возникла из-за какого-то какая-то проблема с округлением. Интересная часть проблемы: она эксклюзивна для платформы Android и не воспроизводится на платформах iOS, OSX, Windows в разных браузерах. Вот фрагмент моего кода, который копирует пришедшую сцену. из MapLibre в переменную renderTexture. [code] // render-to-texture gl.bindTexture(gl.TEXTURE_2D, this.renderTexture!); let w = gl.canvas.width; let h = gl.canvas.height; gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, w, h, 0); // Solid black texture sent to fragment shader // gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, w + 1, h, 0); // Texture correctly sent to fragment shader // gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, w + 1, h - 1, 0); // Also works vice versa // gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, w - 1, h, 0); // Doesn't work
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); [/code] Вот как я инициализирую renderTexture [code] this.renderTexture = gl.createTexture()!; gl.bindTexture(gl.TEXTURE_2D, this.renderTexture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.canvas.width, gl.canvas.height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); [/code] Дополнительный контекст [list] [*]Размеры не всегда имеют степень 2, но их округление не решает проблему.[*]Размеры gl.canvas.width и gl.canvas.height совпадают с целевым HTML-элементом. [*]Проблема может быть воспроизведена как в WebGL 1, так и в WebGL 2 в Android. [*]Использование gl.viewPort с дополнительным размером в один пиксель не повлияет на проблему. [*]Функция текстуры фрагментного шейдера (...) возвращает черный цвет при использовании renderTexture в качестве входных данных [/list]
[b]Устройство:[/b] Google Pixel 5 [b]Разрешение:[/b] 1080x2340, масштабный коэффициент 2,75 [b]Браузер:[/b] Google Chrome 103.0.5060.71
Я разрабатываю программу WebGL с помощью Unity 5.3.1
WWW www = new WWW(System.Uri.EscapeUriString(nrmUrl));
while (!www.isDone)
{
yield return null;
}
materailBall.GetComponent().material.SetTexture( _BumpMap , www.texture);
Я пытаюсь выполнить операции с плавающей запятой в C++17 в режиме округления до ближайшего и округления до отклонения. Выполнив поиск на cppreference.com, я обнаружил, что доступно четыре режима округления, включая округление до ближайшего (...
Я пытаюсь выполнить операции с плавающей запятой в C++17 в режиме округления до ближайшего и округления до отклонения. Выполнив поиск на cppreference.com, я обнаружил, что доступно четыре режима округления, включая округление до ближайшего (...
context
Я в настоящее время строю библиотеку для точной записи (в идеале любого) анимации на основе JavaScript, даже на медленных компьютерах или в очень высокой кадре (например, 120fps, чтобы сделать размытие движения позже…). До сих пор я сделал...