1.最近在学OpenGL中文教程,使用C++编写程序。当学到创建自己的Shader类时,在构造函数中需要传入着色器的文件地址,就会发生如下所示的错误。
Shader类构造函数:
Shader(GLchar* vertexPath,GLchar* fragmentPath)
创建Shader的代码:
Shader shader("C:\\Users\\32156\\source\\repos\\LearnOpenGL\\Shader\\vertexShader.txt", "C:\\Users\\32156\\source\\repos\\LearnOpenGL\\Shader\\fragmentShader");
显示的错误:
教程中代码就是这样写的,但是就是会报错。如果将Shader中的GLchar * 改为const GLchar*,错误将消失,也可以正常编译。
2.第一个问题我就是将GLchar*改为了const GLchar*解决的。但是当学到OpenGL混合时,又出现了这样的问题。这次问题出在加载纹理的函数:
GLuint loadTexture(const GLchar* path, GLboolean alpha)
调用函数:
GLuint cubeTexture = loadTexture("C:\\Users\\32156\\source\\repos\\LearnOpenGL\\Resourc\\container.jpg",false);
出现的错误:
教程中加载纹理的函数参数类型使用的是GLchar,但是会报错,我参考问题1加了const依旧出现了上述错误。
3.如果将纹理加载函数中的参数类型设为GLchar,使用(GLchar*)对文件地址进行强制类型转换,则不会报错可以运行,但是检测错误函数会返回:1281。
glGetEror();//在纹理加载函数的第一行使用