added alpha blending for image and text, nodes position are clamped to be integer

This commit is contained in:
2017-02-08 00:20:26 +00:00
parent 5e5ddf310c
commit de1784e932
4 changed files with 13 additions and 5 deletions

View File

@@ -84,7 +84,7 @@
<!-- status bar --> <!-- status bar -->
<border height="30" width="100%" color=".15" border-color=".3" dir="row" pad="0 0 0 10" align="center"> <border height="30" width="100%" color=".15" border-color=".3" dir="row" pad="0 0 0 10" align="center">
<text text="Status Bar: nothing to show here." font-face="arial" font-size="11"/> <text text="Status Bar: nothing to show here." font-face="arial" font-size="11"/>
<text text="#fuckunity #fromscratch" font-face="arial" font-size="11" margin="0 0 0 10" color=".2 .5 1 1"/> <text text="#opengl #fromscratch" font-face="arial" font-size="11" margin="0 0 0 10" color=".2 .5 1 1"/>
</border> </border>
</node> </node>
</layout> </layout>

View File

@@ -89,7 +89,8 @@ void App::init()
"in vec2 uv;" "in vec2 uv;"
"out vec4 frag;" "out vec4 frag;"
"void main(){" "void main(){"
" frag = vec4(texture(tex, uv).r * col.rgb, col.a);" " float a = texture(tex, uv).r;"
" frag = vec4(col.rgb, a);"
"}"; "}";
#ifdef _WIN32 #ifdef _WIN32
@@ -142,6 +143,9 @@ void App::init()
glPointSize(5); glPointSize(5);
glLineWidth(2); glLineWidth(2);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBlendEquation(GL_FUNC_ADD);
//int n; //int n;
//glGetIntegerv(GL_NUM_EXTENSIONS, &n); //glGetIntegerv(GL_NUM_EXTENSIONS, &n);
//for (int i = 0; i < n; i++) //for (int i = 0; i < n; i++)

View File

@@ -46,8 +46,8 @@ void Node::update_internal(const glm::vec2& origin, const glm::mat4& proj)
if (m_widget) if (m_widget)
{ {
glm::mat4 pivot = glm::translate(glm::vec3(.5f, .5f, 0.f)); glm::mat4 pivot = glm::translate(glm::vec3(.5f, .5f, 0.f));
glm::mat4 scale = glm::scale(glm::vec3(m_size, 1.f)); glm::mat4 scale = glm::scale(glm::vec3(glm::ceil(m_size), 1.f));
glm::mat4 pos = glm::translate(glm::vec3(m_pos, 0)); glm::mat4 pos = glm::translate(glm::vec3(glm::floor(m_pos), 0));
m_widget->mvp = proj * pos * scale * pivot; m_widget->mvp = proj * pos * scale * pivot;
m_widget->pos = pos; m_widget->pos = pos;
m_widget->scale = scale; m_widget->scale = scale;

View File

@@ -253,7 +253,9 @@ public:
ShaderManager::u_int(kShaderUniform::Tex, 0); ShaderManager::u_int(kShaderUniform::Tex, 0);
ShaderManager::u_mat4(kShaderUniform::MVP, mvp); ShaderManager::u_mat4(kShaderUniform::MVP, mvp);
ShaderManager::u_vec4(kShaderUniform::Col, m_color); ShaderManager::u_vec4(kShaderUniform::Col, m_color);
glEnable(GL_BLEND);
m_text_mesh.draw(); m_text_mesh.draw();
glDisable(GL_BLEND);
} }
virtual void parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute* attr) override virtual void parse_attributes(kAttribute ka, const tinyxml2::XMLAttribute* attr) override
{ {
@@ -323,6 +325,7 @@ public:
{ {
TextureManager::get(m_id).bind(); TextureManager::get(m_id).bind();
m_sampler.bind(0); m_sampler.bind(0);
glEnable(GL_BLEND);
if (m_use_atlas) if (m_use_atlas)
{ {
ShaderManager::use(kShader::Atlas); ShaderManager::use(kShader::Atlas);
@@ -338,6 +341,7 @@ public:
m_plane.draw_fill(); m_plane.draw_fill();
m_sampler.unbind(); m_sampler.unbind();
TextureManager::get(m_id).unbind(); TextureManager::get(m_id).unbind();
glDisable(GL_BLEND);
} }
virtual void parse_attributes(kAttribute id, const tinyxml2::XMLAttribute* attr) override virtual void parse_attributes(kAttribute id, const tinyxml2::XMLAttribute* attr) override
{ {