VertexBuffer.pkg 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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, const PODVector<VertexElement>& elements, bool dynamic = false);
  8. bool SetSize(unsigned vertexCount, unsigned elementMask, bool dynamic = false);
  9. tolua_outside bool VertexBufferSetData @ SetData(VectorBuffer& data);
  10. tolua_outside bool VertexBufferSetDataRange @ SetDataRange(VectorBuffer& data, unsigned start, unsigned count, bool discard = false);
  11. tolua_outside VectorBuffer VertexBufferGetData @ GetData();
  12. bool IsShadowed() const;
  13. bool IsDynamic() const;
  14. unsigned GetVertexCount() const;
  15. unsigned GetVertexSize() const;
  16. tolua_outside const PODVector<VertexElement>& VertexBufferGetElements @ GetElements() const;
  17. bool HasElement(VertexElementSemantic semantic, unsigned char index = 0) const;
  18. bool HasElement(VertexElementType type, VertexElementSemantic semantic, unsigned char index = 0) const;
  19. unsigned GetElementOffset(VertexElementSemantic semantic, unsigned char index = 0) const;
  20. unsigned GetElementOffset(VertexElementType type, VertexElementSemantic semantic, unsigned char index = 0) const;
  21. unsigned GetElementMask() const;
  22. tolua_property__is_set bool shadowed;
  23. tolua_readonly tolua_property__is_set bool dynamic;
  24. tolua_readonly tolua_property__get_set unsigned vertexCount;
  25. tolua_readonly tolua_property__get_set unsigned vertexSize;
  26. tolua_readonly tolua_property__get_set unsigned elementMask;
  27. };
  28. ${
  29. #define TOLUA_DISABLE_tolua_GraphicsLuaAPI_VertexBuffer_new00
  30. static int tolua_GraphicsLuaAPI_VertexBuffer_new00(lua_State* tolua_S)
  31. {
  32. return ToluaNewObject<VertexBuffer>(tolua_S);
  33. }
  34. #define TOLUA_DISABLE_tolua_GraphicsLuaAPI_VertexBuffer_new00_local
  35. static int tolua_GraphicsLuaAPI_VertexBuffer_new00_local(lua_State* tolua_S)
  36. {
  37. return ToluaNewObjectGC<VertexBuffer>(tolua_S);
  38. }
  39. static bool VertexBufferSetData(VertexBuffer* dest, VectorBuffer& src)
  40. {
  41. // Make sure there is enough data
  42. if (dest->GetVertexCount() && src.GetSize() >= dest->GetVertexCount() * dest->GetVertexSize())
  43. return dest->SetData(&src.GetBuffer()[0]);
  44. else
  45. return false;
  46. }
  47. static bool VertexBufferSetDataRange(VertexBuffer* dest, VectorBuffer& src, unsigned start, unsigned count, bool discard)
  48. {
  49. // Make sure there is enough data
  50. if (dest->GetVertexCount() && src.GetSize() >= count * dest->GetVertexSize())
  51. return dest->SetDataRange(&src.GetBuffer()[0], start, count, discard);
  52. else
  53. return false;
  54. }
  55. static VectorBuffer VertexBufferGetData(VertexBuffer* src)
  56. {
  57. VectorBuffer ret;
  58. void* data = src->Lock(0, src->GetVertexCount(), false);
  59. if (data)
  60. {
  61. ret.Write(data, src->GetVertexCount() * src->GetVertexSize());
  62. ret.Seek(0);
  63. src->Unlock();
  64. }
  65. return ret;
  66. }
  67. static const PODVector<VertexElement>& VertexBufferGetElements(const VertexBuffer* buffer)
  68. {
  69. static PODVector<VertexElement> vector = buffer->GetElements();
  70. return vector;
  71. }
  72. $}