Arhn - архитектура программирования

доступ к массивам в шейдере в OpenGL ES2.0

Это очень странная проблема!! и это должно быть легко решить.

Что я делаю, так это просто просматриваю массив и добавляю данные массива вместе (что-то вроде этого).

float kernel[] = float[5] (1.0, 1.0, 1.0, 1.0,1.0);
for(int i=-2;i<=2;i++) {            
    for(int j=-2; j<=2; j++){           
        color += kernel[0] * texture2D(image,  outUV);
    }
} 

Приведенный выше код не работает, но если изменить ядро ​​​​[0] на 1.0, это будет работать.

float kernel[] = float[5] (1.0, 1.0, 1.0, 1.0,1.0);
for(int i=-2;i<=2;i++) {            
    for(int j=-2; j<=2; j++){           
        color +=  1.0 * texture2D(image,  outUV);
    }
} 

Так что я предполагаю, что есть некоторые проблемы, когда я получаю доступ к массиву!!! Зачем?

23.09.2013

  • Вы можете использовать один единственный vec4 и получить доступ к его значениям x,y,z,w. 23.09.2013

Ответы:


1

Я нашел проблему, кажется, я не могу присвоить значения массива при его объявлении. Я должен написать такой код:

float kernel[5] ;

void main(){
    kernel[0]=1.0;
    kernel[1]=2.0;
    ...
    for(int i=-2;i<=2;i++) {            
      for(int j=-2; j<=2; j++){           
         color +=  kernel[i+2]*kernel[j+2] * texture2D(image,  outUV);
      } 
    } 
 }
24.09.2013
  • Но подождите, вы не используете color += kernel[0]... в коде, все еще есть color += 1.0..., пожалуйста, проверьте фрагмент кода. 24.09.2013
  • @keaukraine Спасибо за ваш ответ, я принимаю свой собственный ответ до завтра. 24.09.2013

  • 2

    В качестве альтернативы вы можете использовать один vec4 и получить доступ к его значениям x,y,z,w.

    Я предполагаю, что это фрагментный шейдер, поэтому наиболее вероятной причиной его неработоспособности может быть отсутствие точности для типа с плавающей запятой. Во фрагментном шейдере вы должны явно указать точность для типа float:

    precision mediump float;
    

    Не могли бы вы подробнее описать неправильное поведение шейдера? Кроме того, полный код шейдера может пролить свет на вашу проблему.

    23.09.2013
    Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..