В течение примерно 4 недели, я был в состоянии успешно запустить вершинные/фрагмент шейдеры отмечен на вершине с:Почему мой шейдер #version 330 работает на более ранних версиях?
#version 330 core
Однако, я просто понял, что, когда я называю:
cout << "OpenGL version: " << glGetString(GL_VERSION) << endl;
cout << "GLSL version: " << glGetString(GL_SHADING_LANGUAGE_VERSION) << endl;
Я получаю :
OpenGL version: 3.2.0
GLSL version: 1.50 NVIDIA via Cg compiler
Почему/как я могу запускать эти шейдеры со старыми версиями GLSL и OpenGL? Должен ли я использовать более старую версию шейдера? Почему я не получаю никаких ошибок при запуске этого шейдера? Я пытаюсь поймать их следующим образом:
// Compile vertex shader
glCompileShader(VS);
glGetShaderiv(VS, GL_COMPILE_STATUS, &rc);
if(!rc) {
if(isVerbose()) {
GLSL::printShaderInfoLog(VS);
cout << "Error compiling vertex shader " << vShaderName << endl;
}
return false;
}
Я получаю другие ошибки компиляции, когда делаю ошибки в своем шейдере. Должен ли я получать некоторую ошибку или предупреждение, потому что мой шейдерный язык слишком новый? Как я могу узнать, что поддерживает мое оборудование, если оно может обрабатывать нечто более новое, чем версия, которую он сообщает?
Вы конкретно запрашиваете контекст GL 3.2, когда ваш драйвер может поддерживать более поздний? – MuertoExcobito
Спасибо, это было. Я вызывал 'glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 3);' и 'glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 2);' Удаление, из-за чего мои версии отображают 4.30 для OpenGL и GLSL. Добавьте его в качестве ответа, и я соглашусь с ним. – xdhmoore