No mesh rendered when changing the platform.
-
Sorry, I am a newbie. I have a problem to render a certain mesh in Window 7/ATI Radeon HD 5700 Series.
Previously, I can perfectly render it in Mac OS X/Intel Graphics HD 3000. Everything works fine. But after I change to Window 7/ATI Radeon HD 5700 Series, The viewport renders only the background (no mesh rendered). I use the same codes and same shaders, and ,also, already change the corresponding path.
Opengl version : 3.2
GLSL version : 1.5
Qt : 5.1This is my own vertex shader :
@#version 150in vec3 vertexPosition;
in vec2 vertexTexCoord;
in vec3 vertexNormal;out vec2 TexCoord;
out vec3 Normal_eye;
out vec4 vPos_to_lightPos_eye;
out vec4 vPos_to_CamPos_eye;uniform mat4 ModelMatrix;
uniform mat4 ViewMatrix;
uniform mat4 ProjMatrix;
uniform vec3 LightPos_0;void main()
{
vec4 Position_model = vec4(vertexPosition, 1.0);
vec4 Normal_model = vec4(vertexNormal, 1.0);
vec4 lightPos = vec4(LightPos_0,1.0);vec4 vPos_eye = ViewMatrix * ModelMatrix * Position_model; vec4 lightPos_eye = ViewMatrix * lightPos; // Compute gl_NormalMatrix mat3 ModelMatrix3x3 = mat3(ModelMatrix); mat3 ViewMatrix3x3 = mat3(ViewMatrix); mat3 NormalMatrix = transpose(inverse(mat3(ViewMatrix) * mat3(ModelMatrix))); // Output Normal_eye = NormalMatrix * Normal_model.xyz; vPos_to_lightPos_eye = lightPos_eye - vPos_eye; vPos_to_CamPos_eye = -vPos_eye; TexCoord = vertexTexCoord; gl_Position = ProjMatrix*ViewMatrix*ModelMatrix * Position_model;
}
@And this is fragment shader:
@#version 150in vec3 Normal_eye;
in vec2 TexCoord;
in vec4 vPos_to_lightPos_eye;
in vec4 vPos_to_CamPos_eye;out vec4 OutColor;
uniform sampler2D sampler1;
uniform vec4 LightColor_0; // Cl
uniform vec4 AmbientColor; // Ca
uniform vec4 SpecularColor; // Cp
uniform float PhongExponent; // pvoid main()
{
vec4 DiffuseColor = texture(sampler1,TexCoord); // Cr = Diffuse Reflectancevec3 normalized_Normal_eye = normalize(Normal_eye.xyz); vec3 normalized_vPos_to_lightPos_eye = normalize(vPos_to_lightPos_eye.xyz); vec3 normalized_vPos_to_CamPos_eye = normalize(vPos_to_CamPos_eye.xyz); vec3 h = normalize(normalized_vPos_to_lightPos_eye + normalized_vPos_to_CamPos_eye); float DiffuseTerm = max(0.0, dot(normalized_Normal_eye, normalized_vPos_to_lightPos_eye)); float SpecularTerm = pow(max(0.0, dot(normalized_Normal_eye,h)),PhongExponent); OutColor = DiffuseColor*(AmbientColor + LightColor_0 * DiffuseTerm) + (LightColor_0 * SpecularColor * SpecularTerm);
}
@and this is the opengl context setup :
@// Tell Qt we will use OpenGL for this window
setSurfaceType( OpenGLSurface );// Specify the format we wish to use QSurfaceFormat format; format.setDepthBufferSize( 24 ); format.setMajorVersion(3); format.setMinorVersion(2); format.setSamples(16); format.setSwapBehavior(QSurfaceFormat::DoubleBuffer); format.setProfile(QSurfaceFormat::CoreProfile); //format.setOption( QSurfaceFormat::DebugContext ); resize( 800,600 ); setFormat( format ); create(); // Create an OpenGL context m_context = new QOpenGLContext; m_context->setFormat( format ); m_context->create(); m_context->makeCurrent( this ); // Check OpenGL version qDebug("OpenGL Version = %s", glGetString(GL_VERSION)); const char *version = (char*)glGetString(GL_VERSION); QString showVersion = QString("OpenGL Version : ") + version; this->setTitle("ARM GL >> " + showVersion); // Setup our scene m_scene->setContext( m_context ); initializeGL(); // Make sure we tell OpenGL about new window sizes connect( this, SIGNAL( widthChanged( int ) ), this, SLOT( resizeGL() ) ); connect( this, SIGNAL( heightChanged( int ) ), this, SLOT( resizeGL() ) ); resizeGL(); // This timer drives the scene updates QTimer* timer = new QTimer( this ); connect( timer, SIGNAL( timeout() ), this, SLOT( updateScene() ) ); timer->start( 16 ); // 62.5 fps@
I do not know if it is the graphics card issue or not. I have been searching for the solution on many forums and eventually, I could not fix it.
-
Hi,
IIRC, I saw another thread recently discussing ATI problems so it might be a bug/regression.
I think you should post your question on the interest mailing list, you'll find Qt's developers/maintainers there (this forum is more user oriented) maybe also check the "bug report system":http://bugreports.qt-project.org/issues to see if someone already report this.
-
Sorry for posting it here and thanks for your advice.
-
You're welcome !
No need for excuses, it's still a good question to be posted :)