Alexander Lopatin

  • Content count

  • Joined

  • Last visited

Community Reputation

113 Neutral

About Alexander Lopatin

  • Rank
  1. OpenGL [GLSL] Draw a textured (RGBA) polygon with opacity

    [quote name='beans222' timestamp='1350242653' post='4990119'] You could also use the keyword 'flat' before 'varying' to turn off interpolation for that variable. [/quote]Thanks [quote name='apatriarca' timestamp='1350248441' post='4990148'] Why are you using an ancient OpenGL version like 1.4 with the GLSL version introduced in OpenGL 2.1? If you need features introduced in GLSL 1.2, you are probably targeting GPUs which also support the OpenGL 2.1 version (and maybe also OpenGL 3.0). [/quote]I've got only old hardware right now (one of intel gma videocards), that supports only Open GL <=1.4, but GLSL 1.2 is also supported via ARB-extensions (not the way OpenGL >=2.0 works with). [quote name='Geometrian' timestamp='1350282564' post='4990279'] Also, I'm confused. (Global) uniforms act per-primitive. How did you manage different values of a per-triangle attribute for each vertex? [/quote]If I understand right---that caused by assigning uniform to varying variable and only then using it (varying var) in fragment shader.
  2. OpenGL [GLSL] Draw a textured (RGBA) polygon with opacity

    The issue is resolved by declaring a uniform variable in fragment shader. By some reason I thought that it's impossible to use uniform variables inside a fragment shader.
  3. Hello. I'm new to GLSL and have another one nooby question: how to draw a textured polygon with opacity, that changes from C/C++ application? I'm using OpenGL 1.4 and GLSL 1.2 via ARB-extensions. Tried to set opacity using uniform variable to vertex shader and assign it to varying variable to use it in fragment shader—surly I see gradient-like opacity (that I don't want), 'cause of varying variable. Vertex shader looks like: [CODE]uniform float opacity; varying float vopacity; void main() { vopacity = opacity; gl_Position = gl_Vertex; gl_TexCoord[0] = gl_MultiTexCoord0; } [/CODE] and fragment one like: [CODE]uniform sampler2D tex; varying float vopacity; void main() { vec4 color = texture2D(tex, gl_TexCoord[0].st); if (color.a > 0.01) color.a = vopacity; //color.a = 0.4; // that works as I want, but it's not a variable gl_FragColor = color; }[/CODE] Googled this pretty simple problem all the day without success. I'd be glad if someone point me to the right way. Thank you! P.S. to admin/moderator: if I chose the wrong forum section—please move it to "For beginners".