nuclear -9 Junior Poster in Training

So i was simply following one of the opengl tutorials - http://nehe.gamedev.net/tutorial/loading_and_moving_through_a_3d_world/22003/

So everything works completely fine except one thing, when i load in textures with SOIL lib its not completely correct, but with GLAUX lib it works just fine but i dont prefer using GLAUX. Here is what i mean:

with GLAUX - http://postimage.org/image/rz6lxzo9b/
with SOIL - http://postimage.org/image/4eg27jf0j/

Texture loading code with GLAUX (Dont mind the different filtering here):

AUX_RGBImageRec *LoadBMP(char *Filename)                // Loads A Bitmap Image
{
    FILE *File=NULL;                                // File Handle

    if (!Filename)                                  // Make Sure A Filename Was Given
    {
            return NULL;                            // If Not Return NULL
    }

    File=fopen(Filename,"r");                       // Check To See If The File Exists

    if (File)                                       // Does The File Exist?
    {
            fclose(File);                           // Close The Handle
            return auxDIBImageLoad(Filename);       // Load The Bitmap And Return A Pointer
    }
    return NULL;                                    // If Load Failed Return NULL
}

int LoadGLTextures()                                    // Load Bitmaps And Convert To Textures
{
    int Status=FALSE;                               // Status Indicator

    AUX_RGBImageRec *TextureImage[1];               // Create Storage Space For The Texture

    memset(TextureImage,0,sizeof(void *)*1);        // Set The Pointer To NULL

    // Load The Bitmap, Check For Errors, If Bitmap's Not Found Quit
    if (TextureImage[0]=LoadBMP("Data/Mud.bmp"))
    {
            Status=TRUE;                            // Set The Status To TRUE

            glGenTextures(3, &texture[0]);          // Create Three Textures

            // Create Nearest Filtered Texture
            glBindTexture(GL_TEXTURE_2D, texture[0]);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
            glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

            // Create Linear Filtered Texture
            glBindTexture(GL_TEXTURE_2D, texture[1]);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
            glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

            // Create MipMapped Texture
            glBindTexture(GL_TEXTURE_2D, texture[2]);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
            gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
    }
    if (TextureImage[0])                            // If Texture Exists
    {
            if (TextureImage[0]->data)              // If Texture Image Exists
            {
                    free(TextureImage[0]->data);    // Free The Texture Image Memory
            }

            free(TextureImage[0]);                  // Free The Image Structure
    }

    return Status;                                  // Return The Status
}

Texture loading code with SOIL:

int LoadGLTextures()                                    // Load Bitmaps And Convert To Textures
{
/* load an image file directly as a new OpenGL texture */
texture[0] = SOIL_load_OGL_texture
    (
    "Data/NeHe.bmp",
    SOIL_LOAD_AUTO,
    SOIL_CREATE_NEW_ID,
    SOIL_FLAG_INVERT_Y
    );

if(texture[0] == 0)
    return false;


// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

return true;                                        // Return Success
}

So the question would be - do i need to do something specific in order to load with SOIL just as good as with GLAUX? Maybe i should use something else?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.