OpenGL 3.3 und GLSL Uniform Problem
Verfasst: 21.06.2010, 20:07
Hi
ich versuche mir gerade eine Font Klasse zu erstellen doch leider scheitere ich beim einfärben meiner Schrift :-(
vertex shader
fragment shader
warum kann ich die uniform variable nicht setzen? bei uniform vec4 charPosSize funktioniert es doch auch.
Danke schon mal im Vorraus
Mr.Betatester
ich versuche mir gerade eine Font Klasse zu erstellen doch leider scheitere ich beim einfärben meiner Schrift :-(
vertex shader
Code: Alles auswählen
#version 150 core
precision highp float;
in vec3 in_position;
in vec2 in_texCoord;
uniform vec2 position;
uniform vec2 screenSize;
uniform vec4 charPosSize;
uniform float textureSize;
out vec2 ex_texCoord;
void main(void)
{
vec4 charPS = charPosSize / textureSize;
ex_texCoord.x = charPS.x + in_texCoord.x * (charPS.z);
ex_texCoord.y = 1.0 - (charPS.y + (1.0 - in_texCoord.y) * (charPS.w));
float x = (in_position.x * charPosSize.z + position.x) * (2.0 / screenSize.x);
float y = (in_position.y * charPosSize.w + position.y) * (-2.0 / screenSize.y);
gl_Position = vec4(x - 1.0, y + 1.0, in_position.z, 1.0);
}
fragment shader
Code: Alles auswählen
#version 150 core
precision highp float;
in vec2 ex_texCoord;
out vec4 glFragColor;
uniform vec4 fontColor;
uniform sampler2D texture;
void main(void)
{
vec4 texColor = texture2D(texture, ex_texCoord);
glFragColor = texColor * fontColor; // do not work
//glFragColor = texColor * vec4(0.7f, 0.7f, 0.2f, 1.0f); // work
}
Code: Alles auswählen
AShader::setUniform(shader->getUniformLocation("charPosSize"), (float)m_letterSize[i][0], (float)m_letterSize[i][1],
(float)m_letterSize[i][2], (float)m_fontHeight);
AShader::setUniform(shader->getUniformLocation("fontColor"),
0.7f, 0.7f, 0.2f, 1.0f);
Mr.Betatester