//...
int *lp = &length, *wp = &width;
glfwGetWindowSize(window, lp, wp);
stbi_set_flip_vertically_on_load(true);
data = stbi_load(path, &pic_length, &pic_width, &nrChannel, 0);
if (!data) {
std::cout << "Failed to load texture:" << path << std::endl;
}
//...
//根据png和jpg读取
if (path[strlen(path) - 2] != 'n') {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, pic_length, pic_width, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
}
else {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, pic_length, pic_width, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
}
glGenerateMipmap(GL_TEXTURE_2D);
stbi_image_free(data);
这串代码里面的glTexImage2D函数读取有的图片会报错,有的不会报错
报错时的异常:0x....(nvoglv32.dll)处(位于 Project1.exe 中)引发的异常: 0xC0000005: 读取位置 0x....时发生访问冲突。
刚学opengl一个星期,求指点。。
有没有看一下data是否为空啊,第6行判断data为空只输出一个错误信息,但没有终止代码继续向下运行,应该增加return语句结束函数