From e789c1687299bbaac5ff0f2dae3a0944c7b49fd7 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Wed, 28 Jun 2017 21:56:26 +0200 Subject: [PATCH] [DEV] update triangle draw --- ewol/resource/Colored3DObject.cpp | 21 +++++++++++++++++++-- ewol/resource/Colored3DObject.hpp | 9 +++++++-- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/ewol/resource/Colored3DObject.cpp b/ewol/resource/Colored3DObject.cpp index b8051944..779fcc16 100644 --- a/ewol/resource/Colored3DObject.cpp +++ b/ewol/resource/Colored3DObject.cpp @@ -34,7 +34,7 @@ ewol::resource::Colored3DObject::~Colored3DObject() { } -void ewol::resource::Colored3DObject::draw(std::vector& _vertices, +void ewol::resource::Colored3DObject::draw(const std::vector& _vertices, const etk::Color& _color, bool _updateDepthBuffer, bool _depthtest) { @@ -76,7 +76,7 @@ void ewol::resource::Colored3DObject::draw(std::vector& _vertices, } } -void ewol::resource::Colored3DObject::draw(std::vector& _vertices, +void ewol::resource::Colored3DObject::draw(const std::vector& _vertices, const etk::Color& _color, mat4& _transformationMatrix, bool _updateDepthBuffer, @@ -492,6 +492,23 @@ void ewol::resource::Colored3DObject::drawCone(float _radius, draw(tmpVertices, _tmpColor, _transformationMatrix); } +void ewol::resource::Colored3DObject::drawTriangles(const std::vector& _vertex, + const std::vector& _indice, + mat4& _transformationMatrix, + const etk::Color& _tmpColor, + const vec3& _offset) { + std::vector tmpVertices; + for (size_t iii=0; iii<_indice.size()/3; ++iii) { + tmpVertices.push_back(_vertex[_indice[iii*3 + 0]]+_offset); + tmpVertices.push_back(_vertex[_indice[iii*3 + 1]]+_offset); + tmpVertices.push_back(_vertex[_indice[iii*3 + 2]]+_offset); + //EWOL_INFO(" indices " << _indice[iii*3 + 0] << " " << _indice[iii*3 + 1] << " " << _indice[iii*3 + 2]); + //EWOL_INFO(" triangle " << _vertex[_indice[iii*3 + 0]] << " " << _vertex[_indice[iii*3 + 1]] << " " << _vertex[_indice[iii*3 + 2]]); + } + //EWOL_INFO("display " << tmpVertices.size() << " vertices form " << _indice.size()); + draw(tmpVertices, _tmpColor, _transformationMatrix); +} + namespace etk { template<> std::string to_string(ewol::resource::Colored3DObject const&) { return "!!ewol::resource::Colored3DObject!ERROR!CAN_NOT_BE_CONVERT!!"; diff --git a/ewol/resource/Colored3DObject.hpp b/ewol/resource/Colored3DObject.hpp index bad77b28..e6e466b1 100644 --- a/ewol/resource/Colored3DObject.hpp +++ b/ewol/resource/Colored3DObject.hpp @@ -30,11 +30,11 @@ namespace ewol { DECLARE_RESOURCE_FACTORY(Colored3DObject); virtual ~Colored3DObject(); public: - virtual void draw(std::vector& _vertices, + virtual void draw(const std::vector& _vertices, const etk::Color& _color, bool _updateDepthBuffer=true, bool _depthtest=true); - virtual void draw(std::vector& _vertices, + virtual void draw(const std::vector& _vertices, const etk::Color& _color, mat4& _transformationMatrix, bool _updateDepthBuffer=true, @@ -77,6 +77,11 @@ namespace ewol { int _longs, mat4& _transformationMatrix, const etk::Color& _tmpColor); + void drawTriangles(const std::vector& _vertex, + const std::vector& _indice, + mat4& _transformationMatrix, + const etk::Color& _tmpColor, + const vec3& _offset=vec3(0,0,0.1)); }; }; };