Cargando un archivo tga / bmp en C ++ / OpenGL

Estoy tratando de cargar un archivo tga / bmp. Esto funciona bien, pero el resultado final se ve así:

La imagen que estoy tratando de cargar se ve así:

Algunos de los códigos que estoy usando:

GLuint texture;
const char* filename = "/Users/Admin/Documents/Visual Studio 2013/Projects/OpenGL/OpenGL/image.tga";

unsigned char* data;
data = (unsigned char *) malloc(128 * 128 * 3);
FILE* f;
fopen_s(&f, filename, "rb");
fread(data, 128 * 128 * 3, 1, f);

glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, data);

¿Alguien tiene una idea de lo que estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta