texture_from_png.cpp 821 B

123456789101112131415161718192021222324252627282930
  1. #include "texture_from_png.h"
  2. #ifndef IGL_NO_OPENGL
  3. #include <YImage.hpp>
  4. #include <igl/report_gl_error.h>
  5. IGL_INLINE bool igl::texture_from_png(const std::string png_file, GLuint & id)
  6. {
  7. YImage yimg;
  8. if(!yimg.load(png_file.c_str()))
  9. {
  10. return false;
  11. }
  12. // Why do I need to flip?
  13. //yimg.flip();
  14. glGenTextures(1, &id);
  15. glBindTexture(GL_TEXTURE_2D, id);
  16. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
  17. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
  18. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  19. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  20. glTexImage2D(
  21. GL_TEXTURE_2D, 0, GL_RGB,
  22. yimg.width(), yimg.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, yimg.data());
  23. glBindTexture(GL_TEXTURE_2D, 0);
  24. return true;
  25. }
  26. #endif