# a little help with tutorial 7 and SOIL

This topic is 2841 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hmm, im having a bit of a problem getting tutorial 7 since it uses gluax rather then SOIL and there's a few things that need the teture width/height and data like this line:

 glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data); 

now of course SOIL doesn't seem to have a way of getting the width/height of the texture so as to allow the creation of this type of texture. Maybe im missing something i don't know.

##### Share on other sites
I have same problems with lesson 7 and SOIL...

have you solved?

##### Share on other sites
Are you following the instructions given in the Lesson 6 Update? As long as you use SOIL_load_OGL_texture(), you shouldn't be calling at glTexImage2D() all - SOIL does it for you.

(you can instead call SOIL_load_image, to load the image data into a temporary buffer, and then manually glTexImage2D() it into OpenGL, but that's a lot of extra work, which you don't need to do here)

##### Share on other sites
This is what I've come up with using MinGW:

First remove #include <gl\glaux.h> and add #include "SOIL.h".
#include <stdio.h> can also be removed.
(different code posted 1-14-12 for a more flexible framework)
 int LoadGLTextures() { unsigned int SOIL_flags; GLint mag_param; GLint min_param; for (int i=0; i<3; i++) { switch(i) { case 0: /* SOIL.h uses enum instead of #define for named flag values; easiest just to look them up */ SOIL_flags = 16; // SOIL_FLAG_INVERT_Y value mag_param = GL_NEAREST; min_param = GL_NEAREST; break; case 1: SOIL_flags = 16; mag_param = GL_LINEAR; min_param = GL_LINEAR; break; case 2: SOIL_flags = 16 | 2; // SOIL_FLAG_INVERT_Y | SOIL_FLAG_MIPMAPS value mag_param = GL_LINEAR; min_param = GL_LINEAR_MIPMAP_NEAREST; break; default: return false; } texture=SOIL_load_OGL_texture ( "Data/Crate.bmp", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_flags); if (texture == 0) return false; // Define Texture Parameters glBindTexture(GL_TEXTURE_2D, texture); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_param); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_param); } return true; } 
Also, I have been removing GLvoid from all function parameter lists leaving empty parenthesis as it is evidently not valid C++ to pass a void type as a parameter and MinGW complains.
Finally, the first parameter of CreateGLWindow should be changed from "char* title" to "const char* title".
With SOIL.h and libSOIL.a in the same directory as the lesson7.cpp file, MinGW compiles and links fine using:
g++ -mwindows lesson7.cpp -o lesson7.exe -L. -lSOIL -lopengl32 -lglu32

• ### Game Developer Survey

We are looking for qualified game developers to participate in a 10-minute online survey. Qualified participants will be offered a \$15 incentive for your time and insights. Click here to start!

• 9
• 11
• 15
• 21
• 26