Я передаю GL_TEXTURE_3D в шейдер фрагмента в приложении iOS. Я использую фильтры минимизации и увеличения как GL_LINEAR для этой текстуры. Однако получающаяся в результате текстура, созданная в приложении, имеет блоки вместо плавного перехода цветов, что подразумевает использование интерполяции GL_NEAREST. Вот скриншоты из ожидаемых против получили выходное изображение Интерполяция в texture3D в OpenGL ES 3.0 на iOS
PS: Если я использую 2D текстуру вместо этого, передать в 3D текстуры как сведенное 2D текстуры и сделать интерполяцию вручную в затенении, его работает отлично, и я получаю ожидаемый результат.
Вот код для установки GL_LINEAR
:
GLenum target, minificationFilter, magnificationFilter;
target = GL_TEXTURE_3D;
minificationFilter = GL_LINEAR;
magnificationFilter = GL_LINEAR;
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, minificationFilter);
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, magnificationFilter);
Можете ли вы показать код, где вы установили GL_LINEAR? –
@RhythmicFistman: Я редактировал сообщение, чтобы включить код. Спасибо за вопрос. – user5597458
Эти блоки довольно большие. Может быть, это квантование текстуры? Как вы загружаете текстуру? –