[Mesa-users] Blank screen with Mesa_offscreen render 11.1.2

Brian Paul brianp at vmware.com
Sat Apr 2 20:26:33 UTC 2016


I guess I'd start by trimming down the program, or writing a new test 
case, that does something extremely simple, like clearing the surface to 
non-black and see if that works.

-Brian

On 03/25/2016 02:16 AM, vikramnrao wrote:
> Hi Brian,
>
> I added glFlush and glFinish still no luck with that.
> Am I doing something wrong in the shader code ?
> The same code works fine with the openGL libraries using freeglut and glew.
>
>
> Thanks & Regards,
> Vikram
>
> On Thu, Mar 24, 2016 at 7:15 PM, Brian Paul <brianp at vmware.com
> <mailto:brianp at vmware.com>> wrote:
>
>     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