Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

79 wiersze
1.6 KiB

  1. //
  2. // Lol Engine
  3. //
  4. // Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the Do What The Fuck You Want To
  7. // Public License, Version 2, as published by Sam Hocevar. See
  8. // http://www.wtfpl.net/ for more details.
  9. //
  10. #pragma once
  11. //
  12. // The Texture class
  13. // -----------------
  14. //
  15. #include <lol/gpu/shader.h>
  16. namespace lol
  17. {
  18. struct TextureMagFilter
  19. {
  20. enum Value
  21. {
  22. Unknown = 0,
  23. NEAREST_TEXEL,
  24. LINEAR_TEXEL,
  25. }
  26. m_value;
  27. inline TextureMagFilter() : m_value(Unknown) {}
  28. inline TextureMagFilter(Value v) : m_value(v) {}
  29. inline operator Value() { return m_value; }
  30. };
  31. struct TextureMinFilter
  32. {
  33. enum Value
  34. {
  35. Unknown = 0,
  36. NEAREST_TEXEL_NO_MIPMAP,
  37. LINEAR_TEXEL_NO_MIPMAP,
  38. NEAREST_TEXEL_NEAREST_MIPMAP,
  39. NEAREST_TEXEL_LINEAR_MIPMAP,
  40. LINEAR_TEXEL_NEAREST_MIPMAP,
  41. LINEAR_TEXEL_LINEAR_MIPMAP,
  42. }
  43. m_value;
  44. inline TextureMinFilter() : m_value(Unknown) {}
  45. inline TextureMinFilter(Value v) : m_value(v) {}
  46. inline operator Value() { return m_value; }
  47. };
  48. class Texture
  49. {
  50. public:
  51. Texture(ivec2 size, PixelFormat format);
  52. ~Texture();
  53. void Bind();
  54. void SetData(void *data);
  55. void SetSubData(ivec2 origin, ivec2 size, void *data);
  56. void SetMagFiltering(TextureMagFilter filter);
  57. void SetMinFiltering(TextureMinFilter filter);
  58. void GenerateMipmaps();
  59. TextureUniform GetTextureUniform() const;
  60. private:
  61. class TextureData *m_data;
  62. };
  63. } /* namespace lol */