[Mesa-users] Blank screen with Mesa_offscreen render 11.1.2
Brian Paul
brianp at vmware.com
Thu Mar 24 13:45:59 UTC 2016
On 03/24/2016 12:45 AM, vikramnrao wrote:
> Hi,
>
> Its been quite sometime that I am looking into Off screen rendering
> using Mesa 11.1.2. :)
>
> I was able to render the textured model using Mesa 7.5.1 but somehow I
> couldn't manage lighting the scene there.
>
> However I want my code to run using Mesa 11.1.2.
> I am not able to see anything in the off-screen rendered targa image.
> It just appears blank.
>
> What is wrong in the following code ?
>
[...]
>
>
> glGetError();
> // Draw the triangle !
> glDrawArrays(GL_TRIANGLES, 0, indexed_vertex_data.size());
Try putting a glFlush() or glFinish() call here.
-Brian
>
> SaveScreenGrab("mesa_snapshot.tga");
>
>
> glDisableVertexAttribArray(vertexPosition_modelspaceID);
>
> // Cleanup VBO
> glDeleteBuffers(1, &vertexbuffer);
> glDeleteBuffers(1, &normalbuffer);
> glDeleteBuffers(1, &uvbuffer);
> glDeleteTextures(1, &diffuseMap);
> glDeleteProgram(programID);
>
> }
>
> *************************
> Shader code
> *************************
> --------------------
> vertex shader:
> ---------------------
>
> attribute vec3 vertexPosition_modelspace;
> attribute vec2 vertexUV;
> attribute vec3 normalv;
>
> varying vec2 TexCoords;
> varying vec3 normalf;
> varying vec3 FragPos;
>
> uniform mat4 MVP;
> uniform mat4 Model;
>
>
> void main() {
>
> gl_Position = MVP * vec4(vertexPosition_modelspace,1);
> FragPos = vec3(Model * vec4(vertexPosition_modelspace,1));
> normalf = vec3(Model * vec4(normalv,1));
> TexCoords = vertexUV;
>
> }
>
>
> ------------------------
> Fragment shader:
> -------------------------
> #version 120
>
> struct Material{
> vec4 ambient;
> vec4 diffuse;
> vec4 specular;
> float shininess;
> };
>
> struct DirLight {
> vec3 direction;
> vec3 ambient;
> vec3 diffuse;
> vec3 specular;
> };
>
>
> in vec3 FragPos;
> in vec3 normalf;
> in vec2 TexCoords;
> in vec3 vertexColor;
> vec4 texel0;
>
> uniform sampler2D MeshTexture;
> uniform DirLight dirLight;
> out vec4 ResultFragColor;
> uniform vec3 viewPos;
> uniform Material material;
> uniform float matAlpha;
>
> //Function prototype
> vec4 SurfaceColor (in Material mat, in vec4 texel);
>
> void main()
> {
>
> texel0 = texture2D(MeshTexture, TexCoords);
>
> vec3 norm = normalize(normalf);
> vec3 viewDir = normalize(viewPos - FragPos);
> vec3 lightDir = normalize(-dirLight.direction);
>
> // Diffuse shading
> float diff = max(dot(norm, lightDir), 0.0);
>
> // Specular shading
> vec3 reflectDir = reflect(-lightDir, norm);
> float spec = pow(max(dot(viewDir, reflectDir), 0.0),
> material.shininess);
>
> vec4 surfaceColorValue ;
> surfaceColorValue = mix(material.diffuse, texel0, texel0.a);
> surfaceColorValue.a = min(matAlpha*( 1 + texel0.a) , 1);
>
> vec4 ambient = vec4(dirLight.ambient, 1) * surfaceColorValue ;
> vec4 diffuse = vec4(dirLight.diffuse, 1) * diff * surfaceColorValue ;
> vec4 specular = vec4(dirLight.specular, 1) * spec * material.specular ;
>
> vec4 result = ambient + diffuse + specular ;
>
> ResultFragColor = result;
>
> }
>
> vec4 SurfaceColor (in Material mat, in vec4 texel)
> {
> vec4 SurfColor;
>
> SurfColor = mix(mat.diffuse, texel, texel.a);
> SurfColor.a = min(matAlpha*( 1 + texel.a) , 1);
> return SurfColor;
> }
>
> }
>
>
>
>
> Thanks & Regards,
> Vikram
More information about the mesa-users
mailing list