Jump to content

View more

Image of the Day

Adding some finishing touches...
Follow us for more
#screenshotsaturday #indiedev... by #MakeGoodGames https://t.co/Otbwywbm3a
IOTD | Top Screenshots

The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.


Sign up now

a little help with tutorial 7 and SOIL

4: Adsense

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.


  • You cannot reply to this topic
3 replies to this topic

#1 Enerjak   Members   

277
Like
0Likes
Like

Posted 05 January 2012 - 05:30 AM

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.

#2 Sauzer89   Members   

100
Like
0Likes
Like

Posted 11 January 2012 - 03:55 AM

I have same problems with lesson 7 and SOIL...

have you solved?

#3 swiftcoder   Senior Moderators   

18290
Like
0Likes
Like

Posted 11 January 2012 - 08:15 AM

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)

Tristam MacDonald - Software Engineer @ Amazon - [swiftcoding] [GitHub]


#4 Tweener   Members   

100
Like
0Likes
Like

Posted 11 January 2012 - 07:50 PM

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.
Remove the bmp loading function as in Lesson 06 then change LoadGLTextures() in the following manner
(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[i]=SOIL_load_OGL_texture (
   "Data/Crate.bmp",
   SOIL_LOAD_AUTO,
   SOIL_CREATE_NEW_ID,
   SOIL_flags);
  
  if (texture[i] == 0)
   return false;

  // Define Texture Parameters
  glBindTexture(GL_TEXTURE_2D, texture[i]);
  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




Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.