Russian Qt Forum
Ноябрь 01, 2024, 14:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Косяк с компилером GLSL  (Прочитано 2906 раз)
Disa
Гость
« : Декабрь 09, 2012, 23:08 »

Добрый день.

Почему-то очень странно обновляются данные из шейдеров. Если выдается ошибка, то даже после ее изменения (например, закоменчивания кода) она все равно вылезает, как будто ничего не изменилось.

Вот пример. Был каст из vec4 в vec3:
 
Код:
vec3 eyeVertex = vec3(mvpMatrix * vertex);

Компилер выдал :  error C7011: implicit cast from "vec4" to "vec3". Проверил, все верно - нужный файл, нужный номер строки.

Поменял на:
Код:
vec4 eyeVertex = mvpMatrix * vertex;

По прежнему: error C7011: implicit cast from "vec4" to "vec3".

Qt creator 2.6.2, GLSL 3.3, Qt 4.8.2, винда

PS: В принципе все ок, если удалить и добавить снова эти шейдеры в qrc файл. Но каждый раз это делать задалбывает
« Последнее редактирование: Декабрь 10, 2012, 00:22 от Disa » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Декабрь 10, 2012, 02:02 »

PS: В принципе все ок, если удалить и добавить снова эти шейдеры в qrc файл. Но каждый раз это делать задалбывает
Это еще ничего. У меня на одной машине изменения не ловились до перезагрузки  Улыбающийся
Записан
Disa
Гость
« Ответ #2 : Декабрь 10, 2012, 03:59 »

Я думал я один такой Улыбающийся
Ну компилер правда еще промахивается строчками, немного.

Стоит делать bug report?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Декабрь 10, 2012, 04:17 »

Я думал я один такой Улыбающийся
Ну компилер правда еще промахивается строчками, немного.

Стоит делать bug report?
Не знаю, мне это не приходило в голову. Кому нужен тот report? Hard куда более консервативен чем софт. Вообще GLSL - прекрасный но удивительный язык Улыбающийся. Написал я шейдак - работает. Хирак - у заказчика на одной машине (из многих) не работает, хотя компилится. После долгих разборок
Код
glSlang
if (a > 1) return;  
b = 0;
..
 
Так эта карта не хочет. "Правильно" так
Код
glSlang
if (a > 1)
return;  
else {
b = 0;
..
}
 
А как бьет по мозгам то что ВЕСЬ код выполняется. Напр ф-ция которая нигде не вызывается - но все равно она карту грузит. Привыкнуть к этому нелегко. В общем - успехов  Улыбающийся

Записан
Disa
Гость
« Ответ #4 : Декабрь 10, 2012, 06:06 »

Да есть такое, я тоже долго не понимал что не работает, пока не увидел что из 10ти uniform один забыл передать в шейдер. И никто про это не сказал Улыбающийся
Ну ваш пример, конечно, намного красочнее описывает особенности. Nuff said Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 22.