X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fbatch.h;h=f3495860e4b4297d072869f73082ce6f4e6a7c7b;hb=9eb9f592d37e9a1e05c2ff70887a1c5f26b98864;hp=45101d4356672950dc9439a5401ed1a3311bc307;hpb=190a7e11237351f6b730c28f7b16f183e8adc69c;p=libs%2Fgl.git diff --git a/source/core/batch.h b/source/core/batch.h index 45101d43..f3495860 100644 --- a/source/core/batch.h +++ b/source/core/batch.h @@ -30,6 +30,7 @@ public: Loader(Batch &); private: void indices(const std::vector &); + void patch_size(unsigned); }; private: @@ -37,10 +38,10 @@ private: DataType index_type; std::vector data; unsigned max_index; + unsigned patch_size = 3; public: Batch(PrimitiveType); - ~Batch(); PrimitiveType get_type() const { return prim_type; } @@ -51,6 +52,12 @@ public: DataType get_index_type() const { return index_type; } + /** Sets the number of control points per patch. Only available if the + primitive type is PATCHES. */ + void set_patch_size(unsigned); + + unsigned get_patch_size() const { return patch_size; } + /** Appends a single index. The data type is automatically adjusted if the index is too large for the current data type. */ Batch &append(unsigned); @@ -70,8 +77,8 @@ private: virtual std::size_t get_data_size() const { return data.size(); } virtual const void *get_data_pointer() const { return &data[0]; } virtual std::size_t get_alignment() const { return get_index_size(); } - std::size_t get_index_size() const; public: + std::size_t get_index_size() const { return get_type_size(index_type); } std::size_t size() const { return data.size()/get_index_size(); } unsigned get_index(std::size_t) const;