I wan to create texture from image rgb data. When the texture is rendered to the screen it shows nothing. I was just wondering if I missed something in the implementation:

Qt Code:
  1. void GlWidget::createTextureFromBitmap(QByteArray btmp)
  2. {
  3. /* create a 800 bye 600 * 3 texture from bitmap */
  4. tex.buf = new unsigned char[bytes.size()];
  5. memcpy(tex.buf, bytes.constData(), bytes.size());
  6. glGenTextures( 1, &tex.id);
  7. glBindTexture(GL_TEXTURE_2D, tex.id);
  8. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
  9. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
  10. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
  11. glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR);
  12. glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
  13. glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 0, GL_RGB, GL_UNSIGNED_BYTE, tex.buf);
  14. gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, 800, 600, GL_RGB, GL_UNSIGNED_BYTE, tex.buf);
  15. delete [] tex.buf;
  16. tex.buf = NULL;
  17.  
  18. updateGL();
  19. }
  20.  
  21.  
  22. void GlWidget::paintGL()
  23. {
  24. shaderProgram.bind();
  25. shaderProgram.setUniformValue("mvpMatrix", pMatrix * vMatrix * mMatrix);
  26. shaderProgram.setUniformValue("texture", 0);
  27.  
  28. glActiveTexture(GL_TEXTURE0);
  29. glBindTexture(GL_TEXTURE_2D, tex.id);
  30. //glActiveTexture(0);
  31.  
  32. shaderProgram.setAttributeArray("vertex", vertices.constData());
  33. shaderProgram.enableAttributeArray("vertex");
  34. shaderProgram.setAttributeArray("textureCoordinate", textureCoordinates.constData());
  35. shaderProgram.enableAttributeArray("textureCoordinate");
  36.  
  37. glDrawArrays(GL_TRIANGLES, 0, vertices.size());
  38.  
  39. shaderProgram.disableAttributeArray("vertex");
  40. shaderProgram.disableAttributeArray("textureCoordinate");
  41. shaderProgram.release();
  42. }
To copy to clipboard, switch view to plain text mode