在为NightDust编写着色器加载器时遇到了一些问题,记录下来以供参考。
着色器编译器提示Syntax Error
这个问题会表现在in、out关键字和version标签报错。如果确定代码没有语法问题的话,那就是因为没有开启OpenGL核心模式。GLFW库通过如下命令开启核心模式:
1 | #define GLFW_INCLUDE_GLCOREARB //用于配制GLFW启用OpenGL3,在包含GLFW头文件之前声明此行 |
无法生成着色器ID
症状为着色器相关函数不为传入的变量写入值。原因是必须在指定了OpenGL上下文之后才可以使用着色器。可以在加载器里添加检测上下文是否存在的代码。
1 | if(!glfwGetCurrentContext()){ |