glGenerateMipmap中的GL_INVALID_OPERATION(不完整的多维数据集映射)
GL_INVALID_OPERATION in glGenerateMipmap(incomplete cube map)
我正在尝试学习OpenGL,并使用SOIL加载图像。
我有以下代码:
GLuint texID = 0;
bool loadCubeMap(const char * baseFileName) {
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &texID);
glBindTexture(GL_TEXTURE_CUBE_MAP, texID);
const char * suffixes[] = { "posx", "negx", "posy", "negy", "posz", "negz" };
GLuint targets[] = {
GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_X,
GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,
GL_TEXTURE_CUBE_MAP_POSITIVE_Z, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
};
for (int i = 0; i < 6; i++) {
int width, height;
std::string fileName = std::string(baseFileName) + "_" + suffixes[i] + ".png";
std::cout << "Loading: " << fileName << std::endl;
unsigned char * image = SOIL_load_image(fileName.c_str(), &width, &height, 0, SOIL_LOAD_RGB);
if (!image) {
std::cerr << __FUNCTION__ << " cannot load image " << fileName << " (" << SOIL_last_result() << ")" << std::endl;
return false;
}
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image);
SOIL_free_image_data(image);
}
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glGenerateMipmap(GL_TEXTURE_CUBE_MAP);
glBindTexture(GL_TEXTURE_CUBE_MAP, 0);
return true;
}
当我调用这个时,图像加载成功,但随后我在控制台中得到一个错误:
---- OGL DEBUG ----
message <1>: 'API' reported 'Error' with 'High' severity:
GL_INVALID_OPERATION in glGenerateMipmap(incomplete cube map)
---- BACKTRACE ----
并且根本没有显示立方体贴图。你看到这个代码有什么错误吗?
您从未实际为立方体贴图面指定纹理图像。而是在所有立方体面的GL_TEXTURE_2D
目标上调用glTexImage2D
。
相关文章:
- 如何实现高效的算法来计算大型数据集的多个不同值?
- HDF5Cpp 扩展复合数据集超板问题
- HDF5 简单读取数据集失败
- std::bad_alloc 在大数据集的 Dijkstra 计算期间
- C++中的多维数据集:从 std::vector 的 2D 数据到 std::vector 的 2D 网格的最干净方法?
- C++创建空 HDF5 文件而不是数据集的代码
- 跨线程共享数据集与拆分每个线程的数据
- 多维数据集ai中的ai_float是什么
- 适用于频繁更改的大型数据集的最佳数据结构
- 将数据集从 R 传递到C++(使用 .呼叫)
- 将数据集几乎平均分配给工作线程
- 我将 c++ 矢量数据集转换为 c 数组.我将相同的数据集传递到一个应该给出相同输出的函数中
- 使用 194 点海伦数据集训练 DLib 形状预测器
- 现代 OpenGL 多维数据集旋转未按预期工作
- 数据集(和样本)何时在 boost::test 中销毁?
- 从数据集 Blob 字段中打开和编辑文件
- openGL-testure映射多维数据集失败
- Direct3D 11:如何访问 CPU 端内存中的多维数据集映射人脸(ID3D11DeviceContext::Map
- glGenerateMipmap中的GL_INVALID_OPERATION(不完整的多维数据集映射)
- 哪个向量和映射,使用更少的内存(大的数据集和未知的大小)