MaterialInputVariable.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. #include "MaterialInputVariable.h"
  2. #include "SProgUniVar.h"
  3. #include "Texture.h"
  4. #include "Util/Assert.h"
  5. //==============================================================================
  6. // Constructor =
  7. //==============================================================================
  8. MaterialInputVariable::MaterialInputVariable(const SProgUniVar& svar, float val)
  9. : sProgVar(svar)
  10. {
  11. ASSERT(svar.getGlDataType() == GL_FLOAT);
  12. scalar = val;
  13. type = T_FLOAT;
  14. }
  15. MaterialInputVariable::MaterialInputVariable(const SProgUniVar& svar,
  16. const Vec2& val)
  17. : sProgVar(svar)
  18. {
  19. ASSERT(svar.getGlDataType() == GL_FLOAT_VEC2);
  20. vec2 = val;
  21. type = T_VEC2;
  22. }
  23. MaterialInputVariable::MaterialInputVariable(const SProgUniVar& svar,
  24. const Vec3& val)
  25. : sProgVar(svar)
  26. {
  27. ASSERT(svar.getGlDataType() == GL_FLOAT_VEC3);
  28. vec3 = val;
  29. type = T_VEC3;
  30. }
  31. MaterialInputVariable::MaterialInputVariable(const SProgUniVar& svar,
  32. const Vec4& val)
  33. : sProgVar(svar)
  34. {
  35. ASSERT(svar.getGlDataType() == GL_FLOAT_VEC4);
  36. vec4 = val;
  37. type = T_VEC4;
  38. }
  39. MaterialInputVariable::MaterialInputVariable(const SProgUniVar& svar, Fai val)
  40. : sProgVar(svar)
  41. {
  42. ASSERT(svar.getGlDataType() == GL_SAMPLER_2D);
  43. fai = val;
  44. type = T_FAI;
  45. }
  46. MaterialInputVariable::MaterialInputVariable(const SProgUniVar& svar,
  47. const char* texFilename)
  48. : sProgVar(svar)
  49. {
  50. ASSERT(svar.getGlDataType() == GL_SAMPLER_2D);
  51. texture.loadRsrc(texFilename);
  52. type = T_TEXTURE;
  53. }
  54. //==============================================================================
  55. // Destructor =
  56. //==============================================================================
  57. MaterialInputVariable::~MaterialInputVariable()
  58. {}
  59. //==============================================================================
  60. // Accessors =
  61. //==============================================================================
  62. float MaterialInputVariable::getFloat() const
  63. {
  64. ASSERT(sProgVar.getGlDataType() == GL_FLOAT);
  65. return scalar;
  66. }
  67. const Vec2& MaterialInputVariable::getVec2() const
  68. {
  69. ASSERT(sProgVar.getGlDataType() == GL_FLOAT_VEC2);
  70. return vec2;
  71. }
  72. const Vec3& MaterialInputVariable::getVec3() const
  73. {
  74. ASSERT(sProgVar.getGlDataType() == GL_FLOAT_VEC3);
  75. return vec3;
  76. }
  77. const Vec4& MaterialInputVariable::getVec4() const
  78. {
  79. ASSERT(sProgVar.getGlDataType() == GL_FLOAT_VEC4);
  80. return vec4;
  81. }
  82. MaterialInputVariable::Fai MaterialInputVariable::getFai() const
  83. {
  84. ASSERT(sProgVar.getGlDataType() == GL_SAMPLER_2D);
  85. return fai;
  86. }
  87. const Texture& MaterialInputVariable::getTexture() const
  88. {
  89. ASSERT(sProgVar.getGlDataType() == GL_SAMPLER_2D);
  90. return *texture;
  91. }