Название: Не могу осилить usampler2d Отправлено: Авварон от Октябрь 04, 2018, 00:26 В тред призывается Igors.
Вот я делаю текстуру: Код: QImage image(256, 256, QImage::Format::Format_RGBA8888); Вот делаю простой шейдер: Код: #version 330 core Результат - черный квадрат. Если использовать sampler2D, сочетание QOpenGLTexture::TextureFormat::RGBA8_Unorm / QOpenGLTexture::PixelFormat::RGBA и не нормализовать руками, то работает, как и ожидалось. ЧЯДНТ? Название: Re: Не могу осилить usampler2d Отправлено: Igors от Октябрь 04, 2018, 06:13 А что "Igors", долбление справочников никто не отменял :) Переведите все константы в оригиналы и см TextureImage2D (https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexImage2D.xhtml). Вижу хотите иметь в шейдере не нормализованную текстуру, ну вроде GL_RGBA8UI (TextureFormat::RGBA8U) верно. А вот GL_RGBA_INTEGER (PixelFormat::RGBA_Integer) подозрительно. я бы попробовал простецкое GL_RGBA. Ну и провериться glGetError не помешает (зачистить перед вызовом)
Название: Re: Не могу осилить usampler2d Отправлено: Авварон от Октябрь 04, 2018, 12:06 А чо долбление справочников, я уже кучу дней потратил на это.
Нашел в сети примеры наконец, построчно начал копировать. Оказалось, дефолтные значения констант для генерации мипмап не подходят. Очень интуитивно. Так заработало: Код: m_funcs->glGenTextures(1, &m_textureId); Название: Re: Не могу осилить usampler2d Отправлено: Igors от Октябрь 05, 2018, 08:51 Код: m_funcs->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); // вот это нужно! Название: Re: Не могу осилить usampler2d Отправлено: Авварон от Октябрь 05, 2018, 15:24 Код: m_funcs->glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST); // вот это нужно! Да мне сперва просто нарисовать было бы, чтобы разбораться. Но спасибо за информацию. Верно я понимаю, если я хочу выводит текстуру 1в1 то лучше NEAREST? Название: Re: Не могу осилить usampler2d Отправлено: Igors от Октябрь 06, 2018, 10:44 Верно я понимаю, если я хочу выводит текстуру 1в1 то лучше NEAREST? Да, верно, но тогда и размер выводимого должен быть = размеру текстуры. А если хотите использовать карту как хранилище текстур, то можно обойтись и без рендера, ф-ции выгрузки текстуры в RAM есть.Еще общие сведения. Разные пиксели полученного изображения соответствуют разным площадям в мире. Напр пиксель у линии горизонта свободно может покрывать квадратный километр сцены, а др пиксель, под носом у камеры, лишь миллиметры. Соответственно в первый пиксель попадет, напр, площадь текстуры 100Х100 пикселей. Если просто дернуть из текстуры ближайший - получим звон/рванину, a осреднять 100Х100 накладно. В OpenGL это решается MIP'ами (часто в сочетании с anisotropic). Поэтому неясно зачем строить MIP'ы если хотите текстуру 1:1 Название: Re: Не могу осилить usampler2d Отправлено: Авварон от Октябрь 06, 2018, 13:09 Поэтому неясно зачем строить MIP'ы если хотите текстуру 1:1 Хорошее замечание, возможно, она не совсем 1в1 и я где-то накосячил с преобразованиями. Но без мипов она не рисуется вовсе - вижу черный квадрат. За наводку спасибо, покурю преобразования. |