Intereting Posts
Как правильно использовать glDiscardFramebufferEXT Перемещать текстовое представление только при открытии виртуальной клавиатуры на Android Сортировка списка на основе другого списка Как определить, изменяется ли Samsung Game Tuner коэффициент разрешения Получить случайное изображение из галереи телефона и отобразить в поле зрения Воспроизведение фрагмента после того, как onNewIntent не работает Как сделать простой видеопроигрыватель VR с помощью Google CardBoard Android SDK и Rajawali Восстановить состояние представления перед применением атрибутов XML Комбинация холста и макета (Android) Выделить все причины abc_ic_menu_selectall_material.xml Ресурсы NotFoundException Android – Как круговое масштабирование / увеличение части изображения? Как отслеживать ход запроса волейбола Нет Иврита в эмуляции OS X Android Фон Android для заполнения экрана Как использовать оболочку ADB при подключении нескольких устройств? Ошибка с «ошибкой: более одного устройства и эмулятора»

Почему моя шейдерная программа openGL для очков имеет артефакты группировки?

Для каждой точки моя программа шейдеров OpenGL берет его, создает красное кольцо, которое плавно переходит между непрозрачными и полностью прозрачными. Моя программа шейдеров работает, но имеет артефакты.

Фрагментный шейдер ниже.

#version 110 precision mediump float; void main() { float dist = distance(gl_PointCoord.xy, vec2(0.5, 0.5)); // Edge value is 0.5, it should be 1. // Inner most value is 0 it should stay 0. float inner_circle = 2.0 * dist; float circle = 1.0 - inner_circle; vec4 pixel = vec4(1.0, 0.0, 0.0, inner_circle * circle ); gl_FragColor = pixel; } 

Вот менее интересный шейдер вершин, который, как я думаю, не является причиной проблемы.

 #version 110 attribute vec2 aPosition; uniform float uSize; uniform vec2 uCamera; void main() { // Square the view and map the top of the screen to 1 and the bottom to -1. gl_Position = vec4(aPosition, 0.0, 1.0); gl_Position.x = gl_Position.x * uCamera.y / uCamera.x; // Set point size gl_PointSize = (uSize + 1.0) * 100.0; } 

Пожалуйста, помогите мне разобраться, почему моя шейдерная программа OpenGL имеет артефакты группировки?

PS Кстати, это для Android Acer Iconia планшета.

Android GLSurfaceView по умолчанию использует поверхность RGB565. Либо включите сглаживание ( glEnable(GL_DITHER) ), либо установите пользовательский EGLConfigChooser чтобы выбрать конфигурацию поверхности RGBA или RGBX с 8 бит на канал.