OpenCV chargement de l'image de Texture OpenGL

Je veux charger une image (jpg et png) avec OpenCV comme Texture OpenGL.

Ici est de savoir comment je charge l'image pour l'OpenGL:

glEnable(GL_TEXTURE_2D);
  textureData = loadTextureData("textures/trashbin.png");
  cv::Mat image = cv::imread("textures/trashbin.png");
  if(image.empty()){
      std::cout << "image empty" << std::endl;
  }else{
      glGenTextures( 1, &textureTrash );
      glBindTexture( GL_TEXTURE_2D, textureTrash );
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S , GL_REPEAT );
      glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
      glTexImage2D(GL_TEXTURE_2D,0,3,image.cols, image.rows,0,GL_RGB,GL_UNSIGNED_BYTE, image.data);
  }

L'image est chargée, en tant que "image.vide" renvoie toujours false

Ici est de savoir comment je le rendu de la scène à l'aide à la création de la texture:

  glActiveTexture(GL_TEXTURE0);
  glBindTexture(GL_TEXTURE_2D, textureTrash);
  glm_ModelViewMatrix.top() = glm::translate(glm_ModelViewMatrix.top(),0.0f,-13.0f,-10.0f);
  glUniformMatrix4fv(uniformLocations["modelview"], 1, false, glm::value_ptr(glm_ModelViewMatrix.top()));

  std::cout << "textureShaderID: " << glGetUniformLocation(shaderProgram,"texture") << std::endl;

  glUniform1i(glGetUniformLocation(shaderProgram,"texture"), 0);
  objLoader->getMeshObj("trashbin")->render();

Et enfin la fragmentShader où je veux appliquer la texture de ma géométrie

#version 330
in vec2 tCoord;

//texture //
//TODO: set up a texture uniform //
uniform sampler2D texture;

//this defines the fragment output //
out vec4 color;

void main() {
  //TODO: get the texel value from your texture at the position of the passed texture coordinate //
  color = texture2D(texture, tCoord);
}

Les coordonnées de texture sont comeing à partir d'un Vertex Buffer Object et sont correctement configurés à partir de l' .fichier obj. Aussi, je peux voir l'Objet dans ma scène lorsque j'ai mis la couleur, par exemple rouge dans le fragment shader, ou à vec4(tCoord,0,1); ensuite, l'objet est à l'ombre dans une couleur différente.

Malheureusement, l'écran reste noir quand je veux appliquer la texture... quelqu'un Peut-il m'aider et me dire pourquoi reste noir?

OriginalL'auteur glethien | 2013-05-29