(帮助)加载BMP文件错误
(Help) Error loading BMP file
我在RAM内存中加载BMP文件时遇到了一些问题。
显然,图像加载得很好,但当它被OpenGL程序显示时,它看起来很糟糕。程序不会抛出任何错误(在c++中)
代码:
TEXTURE::TEXTURE(const char *path) {
unsigned char header[54];
unsigned int dataPos;
unsigned int width, height, size;
unsigned char *data;
FILE *filePointer = fopen(path, "rb");
if(filePointer == NULL)
printf_s("Error openning image file at '%s'!", path);
if(!fread(header, 1, 54, filePointer))
printf_s("Error, file at '%s' isn't a real BMP file.", path);
if(header[0] != 'B' || header[1] != 'M')
printf_s("Error, file at '%s' isn't a real BMP file.", path);
dataPos = *(int *)&header[0x0A];
size = *(int *)&header[0x22];
width = *(int *)&header[0x12];
height = *(int *)&header[0x16];
if(!size)
size = width * height * 3;
if(!dataPos)
dataPos = 54;
data = new unsigned char[size];
fread(data, 1, size, filePointer);
fclose(filePointer);
glGenTextures(1, &texID);
glBindTexture(GL_TEXTURE_2D, texID);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
glBindTexture(GL_TEXTURE_2D, 0);
}
结果(图像上的信息不重要):
(我不能张贴图片…)https://i.stack.imgur.com/Ny2YD.jpg
原图片:http://k33.kn3.net/C/B/A/4/0/C/DB2.bmp
顶点着色器来源:
#version 330 core
layout(location = 0) in vec4 position;
layout(location = 1) in vec2 texCoords;
out DATA {
vec2 texCoords;
} vs_out;
void main() {
gl_Position = position;
vs_out.texCoords = texCoords;
}
Fragment shader source:
#version 330 core
layout(location = 0) out vec4 color;
in DATA {
vec2 texCoords;
} fs_in;
uniform sampler2D sampler;
void main() {
color = texture(sampler, fs_in.texCoords);
}
尝试使用SOIL库很容易自动加载任何类型的图像作为纹理,参见test_SOIL.cpp的例子里面,这将是有帮助的
相关文章:
- C++系统找不到指定的文件错误
- C++语法头文件错误
- C++生成文件错误"implicit entry/start for main executable"
- C++/生成文件错误:未定义对"main"的引用
- VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- C++程序不制作文件(错误)
- 安卓工作室 |CPP 文件错误错误: 位图库中对"AndroidBitmap_unlockPixels"的未定义引用
- "what does ":*** [可执行文件] 错误 1 " mean ?"
- 如何修复使用VScode调试器gcc调试时的"找不到文件"错误
- 在课堂上创建了一个朋友,给出"无输入文件"错误
- Qt .exe文件错误
- c++ 添加具有写入文件错误的文本变量
- 无法转换 .CATPart 文件.错误:输入文件路径似乎包含不支持的字符
- 写入文本文件错误,QT
- C++写入文件错误
- Windows Subsystem for Linux (WSL) 下的间歇性随机"找不到文件"错误
- 犰狳读取MAT文件错误
- 无法求解FullPathForFilename:COCOS2DX中可能缺少文件错误
- C Wininet FTP列出了许多文件错误
- 生成文件错误 - 找不到文件 - *.cpp