OpenGL数据类型GLchar和char 报错

梦想做顶级游戏引擎
发布于

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();//在纹理加载函数的第一行使用


5
评论 1
收藏 1
  • 老彼得
    GLchar就是char的别名,上述函数直接传递字符串进去需要使用const char* 作为参数接受
    1