From ce3e28295c5358ae1b86b786f226d26fb6e71a3a Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 7 Nov 2017 10:15:46 +0100 Subject: [PATCH] [DEBUG] correct buid of sample --- sample/basic.cpp | 240 +++++++++++++++++++++++------------------------ 1 file changed, 120 insertions(+), 120 deletions(-) diff --git a/sample/basic.cpp b/sample/basic.cpp index 7425b68..09ea7a9 100644 --- a/sample/basic.cpp +++ b/sample/basic.cpp @@ -18,128 +18,128 @@ #define GALE_SAMPLE_VBO_VERTICES (0) #define GALE_SAMPLE_VBO_COLOR (1) - -class MainApplication : public gale::Application { - private: - ememory::SharedPtr m_GLprogram; - int32_t m_GLPosition; - int32_t m_GLMatrix; - int32_t m_GLColor; - float m_angle; - ememory::SharedPtr m_verticesVBO; - public: - void onCreate(gale::Context& _context) override { - setSize(vec2(800, 600)); - m_angle = 0.0f; - m_GLprogram = gale::resource::Program::create("DATA:basic.prog"); - if (m_GLprogram != nullptr) { - m_GLPosition = m_GLprogram->getAttribute("EW_coord3d"); - m_GLColor = m_GLprogram->getAttribute("EW_color"); - m_GLMatrix = m_GLprogram->getUniform("EW_MatrixTransformation"); +namespace appl { + class MainApplication : public gale::Application { + private: + ememory::SharedPtr m_GLprogram; + int32_t m_GLPosition; + int32_t m_GLMatrix; + int32_t m_GLColor; + float m_angle; + ememory::SharedPtr m_verticesVBO; + public: + void onCreate(gale::Context& _context) override { + setSize(vec2(800, 600)); + m_angle = 0.0f; + m_GLprogram = gale::resource::Program::create("DATA:basic.prog"); + if (m_GLprogram != nullptr) { + m_GLPosition = m_GLprogram->getAttribute("EW_coord3d"); + m_GLColor = m_GLprogram->getAttribute("EW_color"); + m_GLMatrix = m_GLprogram->getUniform("EW_MatrixTransformation"); + } + // this is the properties of the buffer requested : "r"/"w" + "-" + buffer type "f"=flaot "i"=integer + m_verticesVBO = gale::resource::VirtualBufferObject::create(5); + if (m_verticesVBO == nullptr) { + TEST_ERROR("can not instanciate VBO ..."); + return; + } + // TO facilitate some debugs we add a name of the VBO: + m_verticesVBO->setName("[VBO] of basic SAMPLE"); + m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_VERTICES, vec3(-0.5,-0.5,0)); + m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_VERTICES, vec3(0,0.5,0)); + m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_VERTICES, vec3(0.5,-0.5,0)); + m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_COLOR, etk::Color(etk::color::red)); + m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_COLOR, etk::Color(etk::color::green)); + m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_COLOR, etk::Color(etk::color::blue)); + // update all the VBO elements ... + m_verticesVBO->flush(); + TEST_INFO("==> Init APPL (END)"); } - // this is the properties of the buffer requested : "r"/"w" + "-" + buffer type "f"=flaot "i"=integer - m_verticesVBO = gale::resource::VirtualBufferObject::create(5); - if (m_verticesVBO == nullptr) { - TEST_ERROR("can not instanciate VBO ..."); - return; + void onDraw(gale::Context& _context) override { + m_angle += 0.01; + TEST_INFO("==> appl Draw ..."); + ivec2 size = getSize(); + // set the basic openGL view port: (position drawed in the windows) + gale::openGL::setViewPort(ivec2(0,0),size); + // Clear all the stacked matrix ... + gale::openGL::setBasicMatrix(mat4()); + // clear background + etk::Color bgColor = etk::color::yellow; + bgColor.setA(0.75); + gale::openGL::clearColor(bgColor); + // real clear request: + gale::openGL::clear(gale::openGL::clearFlag_colorBuffer); + // create a local matrix environnement. + gale::openGL::push(); + + mat4 tmpProjection = etk::matOrtho(-1, 1, + -1, 1, + -2, 2); + // set internal matrix system: + gale::openGL::setMatrix(tmpProjection); + #if 0 + vec3 vertices[3]={ vec3(-0.5,-0.5,0), + vec3(0,0.5,0), + vec3(0.5,-0.5,0) + }; + etk::Color color[3] = { etk::color::red, + etk::color::green, + etk::color::blue + }; + #endif + if (m_GLprogram == nullptr) { + TEST_INFO("No shader ..."); + return; + } + //EWOL_DEBUG(" display " << m_coord.size() << " elements" ); + m_GLprogram->use(); + + // set Matrix : translation/positionMatrix + mat4 projMatrix = gale::openGL::getMatrix() * etk::matRotate(vec3(0,0,1),m_angle); + mat4 camMatrix = gale::openGL::getCameraMatrix(); + mat4 tmpMatrix = projMatrix * camMatrix; + + m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix); + #if 1 + // position: + m_GLprogram->sendAttributePointer(m_GLPosition, m_verticesVBO, GALE_SAMPLE_VBO_VERTICES); + // color: + m_GLprogram->sendAttributePointer(m_GLColor, m_verticesVBO, GALE_SAMPLE_VBO_COLOR); + #else + // position: + m_GLprogram->sendAttribute(m_GLPosition, 3/*x,y,z,unused*/, vertices, 4*sizeof(float)); + // color: + m_GLprogram->sendAttribute(m_GLColor, 4/*r,g,b,a*/, color, 4*sizeof(float)); + #endif + + // Request the draw od the elements: + gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, 3 /*number of points*/); + m_GLprogram->unUse(); + // Restore context of matrix + gale::openGL::pop(); } - // TO facilitate some debugs we add a name of the VBO: - m_verticesVBO->setName("[VBO] of basic SAMPLE"); - m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_VERTICES, vec3(-0.5,-0.5,0)); - m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_VERTICES, vec3(0,0.5,0)); - m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_VERTICES, vec3(0.5,-0.5,0)); - m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_COLOR, etk::Color(etk::color::red)); - m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_COLOR, etk::Color(etk::color::green)); - m_verticesVBO->pushOnBuffer(GALE_SAMPLE_VBO_COLOR, etk::Color(etk::color::blue)); - // update all the VBO elements ... - m_verticesVBO->flush(); - TEST_INFO("==> Init APPL (END)"); - } - void onDraw(gale::Context& _context) override { - m_angle += 0.01; - TEST_INFO("==> appl Draw ..."); - ivec2 size = getSize(); - // set the basic openGL view port: (position drawed in the windows) - gale::openGL::setViewPort(ivec2(0,0),size); - // Clear all the stacked matrix ... - gale::openGL::setBasicMatrix(mat4()); - // clear background - etk::Color bgColor = etk::color::yellow; - bgColor.setA(0.75); - gale::openGL::clearColor(bgColor); - // real clear request: - gale::openGL::clear(gale::openGL::clearFlag_colorBuffer); - // create a local matrix environnement. - gale::openGL::push(); - - mat4 tmpProjection = etk::matOrtho(-1, 1, - -1, 1, - -2, 2); - // set internal matrix system: - gale::openGL::setMatrix(tmpProjection); - #if 0 - vec3 vertices[3]={ vec3(-0.5,-0.5,0), - vec3(0,0.5,0), - vec3(0.5,-0.5,0) - }; - etk::Color color[3] = { etk::color::red, - etk::color::green, - etk::color::blue - }; - #endif - if (m_GLprogram == nullptr) { - TEST_INFO("No shader ..."); - return; + void onPointer(enum gale::key::type _type, + int32_t _pointerID, + const vec2& _pos, + gale::key::status _state) override { + /* + TEST_INFO("input event: type=" << _type); + TEST_INFO(" id=" << _pointerID); + TEST_INFO(" pos=" << _pos); + TEST_INFO(" state=" << _state); + */ } - //EWOL_DEBUG(" display " << m_coord.size() << " elements" ); - m_GLprogram->use(); - - // set Matrix : translation/positionMatrix - mat4 projMatrix = gale::openGL::getMatrix() * etk::matRotate(vec3(0,0,1),m_angle); - mat4 camMatrix = gale::openGL::getCameraMatrix(); - mat4 tmpMatrix = projMatrix * camMatrix; - - m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix); - #if 1 - // position: - m_GLprogram->sendAttributePointer(m_GLPosition, m_verticesVBO, GALE_SAMPLE_VBO_VERTICES); - // color: - m_GLprogram->sendAttributePointer(m_GLColor, m_verticesVBO, GALE_SAMPLE_VBO_COLOR); - #else - // position: - m_GLprogram->sendAttribute(m_GLPosition, 3/*x,y,z,unused*/, vertices, 4*sizeof(float)); - // color: - m_GLprogram->sendAttribute(m_GLColor, 4/*r,g,b,a*/, color, 4*sizeof(float)); - #endif - - // Request the draw od the elements: - gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, 3 /*number of points*/); - m_GLprogram->unUse(); - // Restore context of matrix - gale::openGL::pop(); - } - void onPointer(enum gale::key::type _type, - int32_t _pointerID, - const vec2& _pos, - gale::key::status _state) override { - /* - TEST_INFO("input event: type=" << _type); - TEST_INFO(" id=" << _pointerID); - TEST_INFO(" pos=" << _pos); - TEST_INFO(" state=" << _state); - */ - } - void onKeyboard(const gale::key::Special& _special, - enum gale::key::keyboard _type, - char32_t _value, - gale::key::status _state) override { - TEST_INFO("Keyboard event: special=" << _special); - TEST_INFO(" type=" << _type); - TEST_INFO(" value=" << uint32_t(_value)); - TEST_INFO(" state=" << _state); - } -}; - + void onKeyboard(const gale::key::Special& _special, + enum gale::key::keyboard _type, + char32_t _value, + gale::key::status _state) override { + TEST_INFO("Keyboard event: special=" << _special); + TEST_INFO(" type=" << _type); + TEST_INFO(" value=" << uint32_t(_value)); + TEST_INFO(" state=" << _state); + } + }; +} //! [gale_declare_main] /** * @brief Main of the program (This can be set in every case, but it is not used in Andoid...). @@ -147,7 +147,7 @@ class MainApplication : public gale::Application { * @return std IO */ int main(int _argc, const char *_argv[]) { - return gale::run(ETK_NEW(appl::MainApplication)(), _argc, _argv); + return gale::run(ETK_NEW(appl::MainApplication), _argc, _argv); } //! [gale_declare_main]