Ejemplo n.º 1
0
unsigned int APIENTRY pngBind(const char *filename, int mipmap, int trans, pngInfo *info, int wrapst, int minfilter, int magfilter) {
      unsigned int id = SetParams(wrapst, magfilter, minfilter);

      if (id != 0 && pngLoad(filename, mipmap, trans, info))
            return id;
      return 0;
}
Ejemplo n.º 2
0
bool Texture::LoadPNG(const char *filename) {
	unsigned char *image_data;
	if (1 != pngLoad(filename, &width_, &height_, &image_data, false)) {
		return false;
	}
	GL_CHECK();
	glGenTextures(1, &id_);
	glBindTexture(GL_TEXTURE_2D, id_);
	SetTextureParameters(ZIM_GEN_MIPS);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width_, height_, 0, 
							 GL_RGBA, GL_UNSIGNED_BYTE, image_data);
	glGenerateMipmap(GL_TEXTURE_2D);
	GL_CHECK();
	free(image_data);
	return true;
}
Ejemplo n.º 3
0
Archivo: Test.c Proyecto: dakahler/se3d
void main() {
	pngInfo info;
	GLuint texture;

	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
	glutInitWindowSize(300, 300);
	glutCreateWindow("glpng test");

	#if 0 // Using pngLoad and setting texture parameters manually.
		glGenTextures(1, &texture);
		glBindTexture(GL_TEXTURE_2D, texture);

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);

		if (!pngLoad("Stunt.png", PNG_NOMIPMAP, PNG_SOLID, &info)) {
			puts("Can't load file");
			exit(1);
		}
	#else // Using pngLoadAndBind to set texture parameters automatically.
		texture = pngBind("Stunt.png", PNG_NOMIPMAP, PNG_SOLID, &info, GL_CLAMP, GL_NEAREST, GL_NEAREST);

		if (texture == 0) {
			puts("Can't load file");
			exit(1);
		}
	#endif

	printf("Size=%i,%i Depth=%i Alpha=%i\n", info.Width, info.Height, info.Depth, info.Alpha);

	glEnable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, texture);
	glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
	glEnable(GL_CULL_FACE);
	glColor3f(1, 1, 1);

	glutKeyboardFunc(KeyPress);
	glutIdleFunc(Update);
	glutDisplayFunc(Display);
	glutReshapeFunc(Reshape);

	glutMainLoop();
}
	void TextureAsset::Load(const std::string &filename, FilterType filter, bool repeatX, bool repeatY)
	{
		this->filter = filter;
		this->repeatX = repeatX;
		this->repeatY = repeatY;
		this->filename = filename;
		// only load png for now
		pngInfo info;
		glGenTextures(1, &texID);
		glBindTexture(GL_TEXTURE_2D, texID);

		// choose GL_NEAREST or PNG_NOMIPMAPS
		unsigned int glFilter = GL_NEAREST;

		if (filter == FILTER_LINEAR)
			glFilter = GL_LINEAR;

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, glFilter);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, glFilter);

		unsigned int glRepeatX = repeatX?GL_REPEAT:GL_CLAMP;
		unsigned int glRepeatY = repeatY?GL_REPEAT:GL_CLAMP;

		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, glRepeatX);
		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, glRepeatY);

		if (pngLoad(filename.c_str(), PNG_BUILDMIPMAPS, PNG_ALPHA, &info))
		{
			width = info.Width;
			height = info.Height;

			Debug::Log("Loaded texture: " + filename);
			//printf("Size=%i,%i Depth=%i Alpha=%i\n", info.Width, info.Height, info.Depth, info.Alpha);
		}
		else
		{
			Debug::Log("Can't load texture:");
			Debug::Log(filename);

			width = height = 64;
		}
	}
Ejemplo n.º 5
0
bool Texture::LoadPNG(const char *filename, bool genMips) {
	unsigned char *image_data;
	if (1 != pngLoad(filename, &width_, &height_, &image_data, false)) {
		return false;
	}
	GL_CHECK();
	glGenTextures(1, &id_);
	glBindTexture(GL_TEXTURE_2D, id_);
	SetTextureParameters(genMips ? ZIM_GEN_MIPS : ZIM_CLAMP);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width_, height_, 0,
		GL_RGBA, GL_UNSIGNED_BYTE, image_data);
	if (genMips) {
		if (gl_extensions.FBO_ARB) {
			glGenerateMipmap(GL_TEXTURE_2D);
		} else {
#ifndef USING_GLES2
			glGenerateMipmapEXT(GL_TEXTURE_2D);
#endif
		}
	}
	GL_CHECK();
	free(image_data);
	return true;
}
Ejemplo n.º 6
0
int Skin::load(char *name, bool quiet) {
    char d[512];
    setpath(name);
    makepath(d,"colors.conf");
    if (!Colors.load(d)) {
        sprintf(d, "Skin[%s]: Cannot load colors.conf", name); 
        if (!quiet) MessageBox(NULL,d,"Error",MB_ICONERROR | MB_OK);
        return 0;
    }
    SDL_Surface *s;
    pngLoad("toolbar.png");
    bmToolbar = new Bitmap( s , true );
    pngLoad("load.png");
    bmLoad = new Bitmap( s , true );
    pngLoad("save.png");
    bmSave = new Bitmap( s , true );
    pngLoad("buttons.png");
    bmButtons = new Bitmap( s , true );

    pngLoad("about.png");
    bmAbout = new Bitmap( s , true );
    if (640 != CONSOLE_WIDTH && 480 != CONSOLE_HEIGHT) {

        double xscale = (double)CONSOLE_WIDTH / 640;
        double yscale = (double)CONSOLE_HEIGHT / 480;
        Drawable ss( zoomSurface(bmAbout->surface, xscale, yscale ,SMOOTHING_ON) , false );
//        S->copy(&ss,5,row(12));
        SDL_FreeSurface( bmAbout->surface );
        bmAbout->surface = ss.surface;
    }    
    pngLoad("logo.png");
    SDL_FreeSurface(s);
    bmLogo = NULL;

    makepath(d,"font.fnt");
    if (font_load(d)) {
        sprintf(d, "Skin[%s]: Cannot load font.fnt", name); 
        if (!quiet) MessageBox(NULL,d,"Error",MB_ICONERROR | MB_OK);
        return 0;
    }
    
    return 1;
}
Ejemplo n.º 7
0
int main(int argc, char **argv) {
  // Parse command line arguments.
  const char *FLAGS_infile;
  const char *FLAGS_outfile;
  if (argc >= 3) {
    FLAGS_infile = argv[1];
    FLAGS_outfile = argv[2];
  } else {
    fprintf(stderr, "ERROR: Not enough parameters.\n");
    printusage();
    return 1;
  }

  int flags = 0;
  bool format_set = false;
  for (int i = 3; i < argc; i++) {
    if (argv[i][0] != '-') {
      fprintf(stderr, "Additional arguments must start with '-'\n");
      return 1;
    }
    switch (argv[i][1]) {
      case 'm':
        flags |= ZIM_HAS_MIPS;
        // Generates mips directly here. We can generate gamma
        // corrected mips, and mips for ETC1.
        break;
      case 'g':
        flags |= ZIM_GEN_MIPS;
        break;
      case 'c':
        flags |= ZIM_CLAMP;
        break;
      case 'f':
        {
          for (int j = 0; j < 4; j++) {
            if (!strcmp(format_strings[j], argv[i] + 3)) {
              flags |= j;
              format_set = true;
            }
          }
        }
        break;
    }
  }
	// TODO: make setting?
	flags |= ZIM_ETC1_MEDIUM;
  if ((flags & ZIM_FORMAT_MASK) == ZIM_ETC1) {
    if (flags & ZIM_GEN_MIPS) {
      fprintf(stderr, "WARNING: Cannot generate ETC1 mips at runtime\n");
      flags &= ~ZIM_GEN_MIPS;
    }
  }
  if (!format_set) {
    fprintf(stderr, "Must set format\n");
    printusage();
    return 1;
  }
  
  uint8_t *image_data;
  int width, height;
  if (1 != pngLoad(FLAGS_infile, &width, &height, &image_data, FLAGS_flip)) {
    fprintf(stderr, "Input not a PNG file\n");
    printusage();
    return 1;
  }

  SaveZIM(FLAGS_outfile, width, height, width * 4, flags, image_data);
  int in_file_size = filesize(FLAGS_infile);
  int out_file_size = filesize(FLAGS_outfile);
  fprintf(stdout, "Converted %s to %s. %i b to %i b. %ix%i, %s.\n", FLAGS_infile, FLAGS_outfile, in_file_size, out_file_size, width, height, format_strings[flags & ZIM_FORMAT_MASK]);
  return 0;
}