VertexBuffer.pkg 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. $#include "Graphics/VertexBuffer.h"
  2. class VertexBuffer : public Object
  3. {
  4. VertexBuffer();
  5. ~VertexBuffer();
  6. void SetShadowed(bool enable);
  7. bool SetSize(unsigned vertexCount, unsigned elementMask, bool dynamic = false);
  8. tolua_outside bool VertexBufferSetData @ SetData(VectorBuffer& data);
  9. tolua_outside bool VertexBufferSetDataRange @ SetDataRange(VectorBuffer& data, unsigned start, unsigned count, bool discard = false);
  10. tolua_outside VectorBuffer VertexBufferGetData @ GetData();
  11. bool IsShadowed() const;
  12. bool IsDynamic() const;
  13. unsigned GetVertexCount() const;
  14. unsigned GetVertexSize() const;
  15. unsigned GetElementMask() const;
  16. tolua_property__is_set bool shadowed;
  17. tolua_readonly tolua_property__is_set bool dynamic;
  18. tolua_readonly tolua_property__get_set unsigned vertexCount;
  19. tolua_readonly tolua_property__get_set unsigned vertexSize;
  20. tolua_readonly tolua_property__get_set unsigned elementMask;
  21. };
  22. ${
  23. #define TOLUA_DISABLE_tolua_GraphicsLuaAPI_VertexBuffer_new00
  24. static int tolua_GraphicsLuaAPI_VertexBuffer_new00(lua_State* tolua_S)
  25. {
  26. return ToluaNewObject<VertexBuffer>(tolua_S);
  27. }
  28. #define TOLUA_DISABLE_tolua_GraphicsLuaAPI_VertexBuffer_new00_local
  29. static int tolua_GraphicsLuaAPI_VertexBuffer_new00_local(lua_State* tolua_S)
  30. {
  31. return ToluaNewObjectGC<VertexBuffer>(tolua_S);
  32. }
  33. static bool VertexBufferSetData(VertexBuffer* dest, VectorBuffer& src)
  34. {
  35. // Make sure there is enough data
  36. if (dest->GetVertexCount() && src.GetSize() >= dest->GetVertexCount() * dest->GetVertexSize())
  37. return dest->SetData(&src.GetBuffer()[0]);
  38. else
  39. return false;
  40. }
  41. static bool VertexBufferSetDataRange(VertexBuffer* dest, VectorBuffer& src, unsigned start, unsigned count, bool discard)
  42. {
  43. // Make sure there is enough data
  44. if (dest->GetVertexCount() && src.GetSize() >= count * dest->GetVertexSize())
  45. return dest->SetDataRange(&src.GetBuffer()[0], start, count, discard);
  46. else
  47. return false;
  48. }
  49. static VectorBuffer VertexBufferGetData(VertexBuffer* src)
  50. {
  51. VectorBuffer ret;
  52. void* data = src->Lock(0, src->GetVertexCount(), false);
  53. if (data)
  54. {
  55. ret.Write(data, src->GetVertexCount() * src->GetVertexSize());
  56. ret.Seek(0);
  57. src->Unlock();
  58. }
  59. return ret;
  60. }
  61. $}