From c3a29831bcfff4c2ba9acce43d9c78369c425b58 Mon Sep 17 00:00:00 2001 From: Thibault Soucarre <thibault.soucarre@inria.fr> Date: Wed, 30 Jul 2014 12:40:14 +0000 Subject: [PATCH] Using a char instead of a float for shade --- src/render/Render_alternate.cpp | 8 ++++---- src/render/Shader.cpp | 8 ++++---- src/render/vbo.cpp | 10 +++++----- src/render/vbo.hpp | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/render/Render_alternate.cpp b/src/render/Render_alternate.cpp index b9fe415f..c376faa0 100644 --- a/src/render/Render_alternate.cpp +++ b/src/render/Render_alternate.cpp @@ -674,10 +674,10 @@ void Render_alternate::draw_quad(Element_pos x, Element_pos y, Element_pos z, El } else if(_draw_states){ offset_x = -_default_entity_x_translate; - _current->add(x+offset_x , y+offset_y, 1.);// , _r, _g, _b); - _current->add(x+offset_x+w, y+offset_y, 0.5);// , _r/2, _g/2, _b/2); - _current->add(x+offset_x+w, y+offset_y+h, 0.5);//, _r/2, _g/2, _b/2); - _current->add(x+offset_x , y+offset_y+h, 1.);//, _r, _g, _b); + _current->add(x+offset_x , y+offset_y, 2);// , _r, _g, _b); + _current->add(x+offset_x+w, y+offset_y, 1);// , _r/2, _g/2, _b/2); + _current->add(x+offset_x+w, y+offset_y+h, 1);//, _r/2, _g/2, _b/2); + _current->add(x+offset_x , y+offset_y+h, 2);//, _r, _g, _b); } else if(_draw_ruler){ } diff --git a/src/render/Shader.cpp b/src/render/Shader.cpp index 5cf7eafe..9ca96898 100644 --- a/src/render/Shader.cpp +++ b/src/render/Shader.cpp @@ -29,15 +29,15 @@ Shader::Shader() : m_vertexID(0), m_fragmentID(0), m_programID(0), { } -Shader::Shader(Element_col r, Element_col g, Element_col b):m_vertexID(0), m_fragmentID(0), m_programID(0), m_vertex_code("#version 330 core \n in vec2 in_Vertex; \n in float c; \n uniform mat4 MVP; \n out float shade; \n void main(){ \n gl_Position = MVP * vec4(in_Vertex, 0.0, 1.0); \n shade=c; \n }"){ +Shader::Shader(Element_col r, Element_col g, Element_col b):m_vertexID(0), m_fragmentID(0), m_programID(0), m_vertex_code("#version 330 core \n in vec2 in_Vertex; \n in int c; \n uniform mat4 MVP; \n out float shade; \n void main(){ \n gl_Position = MVP * vec4(in_Vertex, 0.0, 1.0); \n shade=intBitsToFloat(c); \n }"){ std::ostringstream os; //std::cout << "rgb" << r << " " << g << " " << b << std::endl; os << "#version 330 core \n in float shade; \n out vec4 outColor; \n void main(){ \n outColor = vec4("; - os << r; + os << r/2; os << "*shade, "; - os << g; + os << g/2; os << "*shade, "; - os << b; + os << b/2; /*os << ", 0.5); \n"; os << "else \n outColor = vec4("; os << r/2; diff --git a/src/render/vbo.cpp b/src/render/vbo.cpp index 6cb5ec84..798e8289 100644 --- a/src/render/vbo.cpp +++ b/src/render/vbo.cpp @@ -105,7 +105,7 @@ int Vbo::add(Element_pos x, Element_pos y, Element_col r, Element_col g, Element _nbVertex++; } -int Vbo::add(Element_pos x, Element_pos y, float b){ +int Vbo::add(Element_pos x, Element_pos y, char b){ _vertex.push_back(x); _vertex.push_back(y); _shaded.push_back(b); @@ -118,10 +118,10 @@ void Vbo::config(){ std::cout << "Configuration du VBO. Nombre de points : "<< _vertex.size()/2 << std::endl; int vertex_size = _vertex.size() * sizeof(Element_pos); int colors_size = _colors.size() * sizeof(Element_col); - float shaded_size = _shaded.size() * sizeof(float); + int shaded_size = _shaded.size() * sizeof(char); Element_pos * vertex = &_vertex[0]; Element_col * colors = &_colors[0]; - float * shaded = &_shaded[0]; + char * shaded = &_shaded[0]; //Delete old vbo if necessary if(glIsBuffer(_vboID) == GL_TRUE) glDeleteBuffers(1, &_vboID); @@ -143,7 +143,7 @@ void Vbo::config(){ //Clear RAM and realoccate _vertex and _colors std::vector<Element_pos>().swap(_vertex); std::vector<Element_col>().swap(_colors); - std::vector<float>().swap(_shaded); + std::vector<char>().swap(_shaded); //Delete old vao if necessary if(glIsVertexArray(_vaoID)) glDeleteVertexArrays(1, &_vaoID); @@ -164,7 +164,7 @@ void Vbo::config(){ glEnableVertexAttribArray(1); } if(shaded_size>0){ - glVertexAttribPointer(1, 1, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(vertex_size+colors_size)); + glVertexAttribPointer(1, 1, GL_BYTE, GL_FALSE, 0, BUFFER_OFFSET(vertex_size+colors_size)); glEnableVertexAttribArray(1); } //Deselect VBO diff --git a/src/render/vbo.hpp b/src/render/vbo.hpp index a99dacbd..c48de953 100644 --- a/src/render/vbo.hpp +++ b/src/render/vbo.hpp @@ -63,7 +63,7 @@ private: GLuint _vaoID; vector<Element_pos> _vertex; vector<Element_col> _colors; - vector<float> _shaded; + vector<char> _shaded; GLenum _mode; int _nbVertex; @@ -107,7 +107,7 @@ public: int add(Element_pos x, Element_pos y, Element_col r, Element_col g, Element_col b); - int add(Element_pos x, Element_pos y, float b); + int add(Element_pos x, Element_pos y, char b); void lock(); void unlock(); -- GitLab