This code runs with Opengl 3.2
The code works when i use Nvidia graphic card on both Windows 7 and Ubuntu.
But when i tested on my laptop with Radeon HD 5650 on windows 7 only 50% of my vao buffer was rendered to the screen the other 50% did not render at all.
I have tested to run with different shaders and changed how i created my vao buffer but i have had no luck finding out what is the problem.
Can anyone see what can be the problem because i have viewed me blind on this problem for a few days.
//Vao buffer
//I have assumed that my vertex and index creation step works due to they have
//been successfully rendered on different machine with different OS
//int vertexSize = 8
//float* _pData; /*float x,y,z; float r,g,b; float ux, uy;*/
//unsigned int* _pIndex;
//vao creation
glGenVertexArrays(1, &_vao);
glBindVertexArray(_vao);
//Bind the VBO and setup pointers for the VAO
glGenBuffers(1, &_vbo);
glBindBuffer(GL_ARRAY_BUFFER, _vbo);
glBufferData(GL_ARRAY_BUFFER, _numVertex * vertexSize * sizeof(float), pData, GL_DYNAMIC_DRAW);
glVertexAttribPointer( vertexId, 3, GL_FLOAT, GL_FALSE, sizeof(float) * vertexSize, BUFFER_OFFSET(0));//vertex
glVertexAttribPointer( vertexColorId, 3, GL_FLOAT, GL_FALSE, sizeof(float) * vertexSize, BUFFER_OFFSET(sizeof(float)*3));//Color
glVertexAttribPointer( UvCordId, 2, GL_FLOAT, GL_FALSE, sizeof(float) * vertexSize, BUFFER_OFFSET(sizeof(float)*6));//Uv
glEnableVertexAttribArray( vertexId );
glEnableVertexAttribArray( vertexColorId );
glEnableVertexAttribArray( UvCordId );
//Bind the IBO for the VAO
glGenBuffers(1, &_ibo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _ibo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, _numIndex * sizeof(GLuint), _pIndex, GL_DYNAMIC_DRAW);
glBindVertexArray(0);
///////////////////////////////////////////////////////////
//render code
//Bind shader
glUseProgramObjectARB( _program );
glUniformMatrix4fv( _projViewLoc, 1, false, _projectionCameraMatrix );
glUniformMatrix4fv( _modelViewLoc, 1, false, _modelMatrix );
glUniform1i( _textureLoc, 0 );
//Bind texture
glActiveTexture( GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, _textureId );
//Bind and render vao
glBindVertexArray( _vao );
glDrawRangeElements(GL_TRIANGLES, 0, _numVertex, _numIndex, GL_UNSIGNED_INT, NULL);
glBindVertexArray(0);
//shader
//vertex shader
#version 140
uniform mat4 projCamView, modelMatrix;
in vec3 position;
in vec3 inColor;
in vec2 inTextCord;
out vec2 TextCord;
out vec3 vertexColor;
void main()
{
TextCord = inTextCord;
vertexColor = inColor;
gl_Position = projCamView * modelMatrix * vec4(position,1.0f);
}
//fragment shader
#version 140
uniform sampler2D myTexture;
in vec2 TextCord;
in vec3 vertexColor;
out vec4 Frag_Color;
void main()
{
vec4 textureColor = texture2D(myTexture, TextCord);
Frag_Color = vec4( textureColor.rgb * vertexColor, textureColor.a );
}