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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QT4.7 & QGLFormat::CoreProfile & shaders  (Прочитано 3547 раз)
saraksh
Гость
« : Декабрь 18, 2010, 20:50 »

QT 4.7 на Linux, nvidia GTX 460 с поддержкой OpenGl 4.1 и родным нвидивским драйвером.

Если QGLFormat ставлю format.setProfile(QGLFormat::CoreProfile) и версию  OpenGl выше 3.1 (например  format.setVersion(3.2), или format.setVersion(4.1)) шедеры не компилятся.
Если ставлю  CompatibilityProfile, или версию 3.1 и ниже, то компилятся.
Например такой вертех шейдер - проще некуда:
"in vec4 vrtx;\n"
"void main(void)\n"
"{\n"
"gl_Position = vrtx;\n"
"gl_PointSize = 2;\n"
"}\n")};.

Подскажите пожалуйста куда копать, чтобы заставить работать с CoreProfile и версией 4.1

С уважением,
S.
Записан
saraksh
Гость
« Ответ #1 : Декабрь 23, 2010, 01:13 »

В добавок к вышеизложенному:

format().hasOpenGL() - выдает true
context()->isValid() - выдает true

А shader->hasOpenGLShaders(QGLShader::Vertex, context) - выдает false

Ну как так может быть, что и формат ок, и контекст валидный, и драйвер с поддержкой Opengl 4.1, а шедеры (даже Vertex!!) не поддерживаются???!!! Я уже обгуглился, а ответа не нашел :-(((
Записан
alexman
Гость
« Ответ #2 : Декабрь 23, 2010, 09:24 »

QGLShader, QGLShaderProgram
Записан
saraksh
Гость
« Ответ #3 : Декабрь 23, 2010, 15:00 »

QGLShader, QGLShaderProgram

QGLShader и отказывается компилится, или Вы что-то другое имели в виду?
Записан
xop
Гость
« Ответ #4 : Декабрь 24, 2010, 14:11 »

Эмм, а есть возможность посмотреть какие ошибки компиляции выдает драйвер? Еще не факт, что Qt-шная обертка безбажная, может имеет смысл попробовать заюзать например glew и компилять командами GL.

Еще возможно имеет смысл попробовать в шейдере первой строчкой указывать версию. Например #version 400. Или #version 330. Или 140 (она как раз соответствует OpenGL 3.1). Вообще это хорошим тоном считается Улыбающийся
Записан
saraksh
Гость
« Ответ #5 : Декабрь 25, 2010, 15:29 »

Так и делаю:
 "#version 410 core\n"
 "in vec4 vrtx;\n"
 "uniform mat4 matrix;\n"
 "void main(void)\n"
 "{\n"
 "gl_Position = matrix * vrtx;\n"
 "gl_PointSize = 4.0;\n"
  "}\n"

Если явно задавать QGLFormat 4.1 и CoreProfile, то shader->hasOpenGLShaders ругается, что поддержки шедеров нету. Никаких.
Записан
xop
Гость
« Ответ #6 : Декабрь 27, 2010, 15:44 »

Ну, тут только смотреть в сорцы Qt. Или работать напрямую с командами GL.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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