Не могу связать шейдеры с программным объектом в OpenGL, не могу отлаживать ⇐ C++
Не могу связать шейдеры с программным объектом в OpenGL, не могу отлаживать
Я присоединяю вершинный и фрагментный шейдер к программному объекту, а затем пытаюсь связать указанную программу. GL_LINK_STATUS возвращает false. Я проверяю информационный журнал, там куча бессмысленных символов. Я проверяю GL_INFO_LOG_LENGTH, он равен 0. Как мне исправить эту ситуацию?
//это конец моей функции LoadBasicShaders glAttachShader (программа, vertShader); glAttachShader (программа, fragShader); glLinkProgram (программа); статус GLint; glGetProgramiv(программа, GL_LINK_STATUS, &статус); если (статус == GL_FALSE) { Глинт logLength = 0; glGetProgramiv (программа, GL_INFO_LOG_LENGTH, &logLength); std::vector log(logLength + 1); glGetProgramInfoLog(программа, logLength, &logLength, &log[0]); fprintf(stderr, "%s\n\n", log); //logLength возвращает 0, log возвращает, казалось бы, случайные символы return -3;//только мой код ошибки } Мои шейдеры самые простые из возможных, поскольку я только начинаю. Вот вершинный шейдер:
#версия 330 макет (местоположение = 0) в позиции vec4; пустая функция() { gl_Position = позиция; } А вот фрагментный шейдер:
#версия 330 из vec4 outputColor; пустая функция() { выходной цвет = vec4(1.0, 1.0, 1.0, 1.0); } Я использую GLFW для создания окна OpenGL и GLEW для загрузки функций:
if (!glfwInit()) {/*проверка ошибок*/} окно = glfwCreateWindow(800, 600, "Swash", NULL, NULL); если (!окно) {/*дополнительная проверка ошибок*/} glfwMakeContextCurrent (окно); glfwSwapInterval (1); glfwSetKeyCallback (окно, key_callback); если (glewInit() != GLEW_OK) {/*ты угадал*/} //до этого момента не вызывайте ничего, что связано с нестандартными функциями OpenGL GLuint шейдерПрограмма; intshaderLoadResult = LoadBasicShaders(shaderProgram, "../res/vert.shader", "../res/frag.shader");
Я присоединяю вершинный и фрагментный шейдер к программному объекту, а затем пытаюсь связать указанную программу. GL_LINK_STATUS возвращает false. Я проверяю информационный журнал, там куча бессмысленных символов. Я проверяю GL_INFO_LOG_LENGTH, он равен 0. Как мне исправить эту ситуацию?
//это конец моей функции LoadBasicShaders glAttachShader (программа, vertShader); glAttachShader (программа, fragShader); glLinkProgram (программа); статус GLint; glGetProgramiv(программа, GL_LINK_STATUS, &статус); если (статус == GL_FALSE) { Глинт logLength = 0; glGetProgramiv (программа, GL_INFO_LOG_LENGTH, &logLength); std::vector log(logLength + 1); glGetProgramInfoLog(программа, logLength, &logLength, &log[0]); fprintf(stderr, "%s\n\n", log); //logLength возвращает 0, log возвращает, казалось бы, случайные символы return -3;//только мой код ошибки } Мои шейдеры самые простые из возможных, поскольку я только начинаю. Вот вершинный шейдер:
#версия 330 макет (местоположение = 0) в позиции vec4; пустая функция() { gl_Position = позиция; } А вот фрагментный шейдер:
#версия 330 из vec4 outputColor; пустая функция() { выходной цвет = vec4(1.0, 1.0, 1.0, 1.0); } Я использую GLFW для создания окна OpenGL и GLEW для загрузки функций:
if (!glfwInit()) {/*проверка ошибок*/} окно = glfwCreateWindow(800, 600, "Swash", NULL, NULL); если (!окно) {/*дополнительная проверка ошибок*/} glfwMakeContextCurrent (окно); glfwSwapInterval (1); glfwSetKeyCallback (окно, key_callback); если (glewInit() != GLEW_OK) {/*ты угадал*/} //до этого момента не вызывайте ничего, что связано с нестандартными функциями OpenGL GLuint шейдерПрограмма; intshaderLoadResult = LoadBasicShaders(shaderProgram, "../res/vert.shader", "../res/frag.shader");
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение