Hello,

I'm currently having issues with mapping my texture (256x256 BMP) onto a quad for example. I was following this tutorial: http://www.opengl-tutorial.org/begin...textured-cube/ on how to load a BMP texture file. I think my texture is being read but the texture is not mapping properly for some reason: http://i.imgur.com/EQo1Z.png.

So far, this is what I have:

Code :
// Texture.cpp
 
#include "GL/glut.h"
#include "GL/glext.h"
#include "Texture.h"
#include <stdio.h>
 
Texture::Texture(){}
 
bool Texture::loadTexture(const char *filename, GLuint texture[], int id){
 
	unsigned char header[54];
	unsigned int dataPos;
	unsigned int width;
	unsigned int height;
	unsigned int imageSize;
	unsigned char *data;
 
	FILE *file = fopen(filename, "rb");
	if(!file){
		return false;
	}
 
	if(fread(header, 1, 54, file) != 54){
		return false;
	}else if (header[0] != 'B' || header[1] != 'M'){
		return false;
	}
 
	dataPos = *(int*)&(header[0x0A]);
	imageSize = *(int*)&(header[0x22]);
	width = *(int*)&(header[0x12]);
	height = *(int*)&(header[0x16]);
 
	if(imageSize == 0){
		imageSize = width * height * 3;
	}
	if(dataPos == 0){
		dataPos = 54;
	}
 
	// Create buffer
	data = new unsigned char[imageSize];
 
	fread(data, 1, imageSize, file);
	fclose(file);
 
	glGenTextures(1, &texture[id]);
	glBindTexture(GL_TEXTURE_2D, texture[id]);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_BGR, GL_UNSIGNED_BYTE, data);
        glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
	glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
	free(data);
 
	return true;
}

Code :
// main.cpp
 
#include "GL/glut.h"
#include "Camera.h"
#include "Texture.h"
 
#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
 
Camera camera;
Texture textureLoader;
 
GLuint texture[1]; // Test texture 
 
void init(){
 
	textureLoader.loadTexture("test.bmp", texture, 0);
 
	glMatrixMode (GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(60, (float)SCREEN_WIDTH / (float)SCREEN_HEIGHT, 1.0, 1000.0);
 
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
 
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
 
void drawQuad(){
       glBindTexture(GL_TEXTURE_2D, texture[0]);
       glBegin(GL_QUADS);
	    glTexCoord2f(1.0f, 0.0f); glVertex3f(-10, -10, 0);
	    glTexCoord2f(1.0f, 1.0f); glVertex3f(-10, 10, 0);
	    glTexCoord2f(0.0f, 1.0f); glVertex3f(10, 10, 0);
	    glTexCoord2f(0.0f, 0.0f); glVertex3f(10, -10, 0);
	glEnd();
}
 
void display(){
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
	cameraControl();
 
	glLoadIdentity();
	gluLookAt(camera.getPos().x, camera.getPos().y, camera.getPos().z,
				camera.getLook().x + camera.getPos().x, camera.getLook().y,
				camera.getLook().z + camera.getPos().z,
				camera.getUp().x, camera.getUp().y, camera.getUp().z);
 
 
	glEnable(GL_TEXTURE_2D);
	drawQuad();
	glDisable(GL_TEXTURE_2D);
 
	glutSwapBuffers();
}
 
// PLUS other functions, ie. main, keyboard, reshape etc.

Any help is appreciated!

Thanks.