跟着LearnOpenGL文档做的纹理显示不出来,但也不报错

跟着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之类的错误,但也显示不出来纹理,就像这样。
跟着LearnOpenGL文档做的纹理显示不出来,但也不报错_第1张图片

你可能感兴趣的:(opengl,c++,opengl)