//function to load texture GLuint LoadTexture(char* filename) { SDL_Surface* surf; if (surf=IMG_Load(filename)) { if (((surf->w & (surf->w -1))!=0) || ((surf->h & (surf->h -1))!=0)) { printf("Taa nav po2 textuura!\n"); } Uint32 rmask, gmask, bmask, amask; #if SDL_BYTEORDER == SDL_BIG_ENDIAN rmask = 0xff000000; gmask = 0x00ff0000; bmask = 0x0000ff00; amask = 0x000000ff; #else rmask = 0x000000ff; gmask = 0x0000ff00; bmask = 0x00ff0000; amask = 0xff000000; #endif SDL_Surface* surface = SDL_CreateRGBSurface(SDL_SWSURFACE, surf->w, surf->h, 32, rmask, gmask, bmask, amask); if(surface == NULL) { printf("CreateRGBSurface nesanaaca: %s\n", SDL_GetError()); } SDL_Rect srcrect; SDL_Rect dstrect; srcrect.x=srcrect.y=dstrect.x=dstrect.y=0; dstrect.w=srcrect.w=surf->w; dstrect.h=srcrect.h=surf->h; //SDL_SetAlpha(surf,0,255); SDL_BlitSurface(surf,&srcrect,surface,&dstrect); GLuint surfhandle=0; glGenTextures(1,&surfhandle); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D,surfhandle); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,surface->w,surface->h,0,GL_RGBA,GL_UNSIGNED_BYTE,surface->pixels); if (surf) SDL_FreeSurface(surf); if (surface) SDL_FreeSurface(surface); printf("OpenGL errors: %s\n",glGetError()); printf("Textuura %s veiksmiigi ielaadeeta!\n",filename); return surfhandle; } else printf("Neizdevaas ielaadeet textuuru: %s\n",SDL_GetError()); return 0; } //rendering routine void RenderScene() { glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(100,100,0); glBindTexture(GL_TEXTURE_2D,texture); glBegin(GL_QUADS); glTexCoord2i(0,0); glVertex2f(0,0); glTexCoord2i(1,0); glVertex2f(128,0); glTexCoord2i(1,1); glVertex2f(128,128); glTexCoord2i(0,1); glVertex2f(0,128); glEnd(); }