跟着LearnOpenGL文档入门章的纹理一节,把源代码复制下载都运行不了,有这么3条要注意的点。
一、下载完stb_image.h,引用时要加上#define STB_IMAGE_IMPLEMENTATION
会让程序编译时只编译相关函数
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
参考自:https://www.cnblogs.com/hjd21/p/12452187.html
二、使用的路径都得是绝对路径,无论是shader还是图像
否则会出现Failed to load texture
的报错
...
Shader ourShader(R"(H:/20_OpenGL_Pro/00_learnOpenGL/入门/入门/Texture/4.2.vs.Shader)",
R"(H:/20_OpenGL_Pro/00_learnOpenGL/入门/入门/Texture/4.2.fs.Shader)");
...
...
const char* filepath = "H:/20_OpenGL_Pro/00_learnOpenGL/入门/入门/Texture/container.jpg";
unsigned char* data = stbi_load(filepath, &width, &height, &nrChannels, 0);
...
这一点不清楚是否有可以设置的地方,因为用openCV是可以用相对路径的,为何openGL就用不了
参考:怎么解决opengl使用C++文件流读取着色器内容时发生错误的问题?
三、还是路径的格式,必须得是"H:/xxx/yyy/zzz"的斜杠,而不是"H:\xxx\yyy\zzz",无论是shader还是图像
就算你用的是"H:\\xxx\\yyy\\zzz"
或者"R"(H:\xxx\yyy\zzz)"
都不行,确实不报Failed to load texture
之类的错误,但也显示不出来纹理,就像这样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)