我是c++ / cinder的新手,正在尝试将3ds .obj文件导入cinder并应用简单的纹理。我真的找不到任何有关如何执行此操作的简单教程,它似乎与freeGLUT略有不同。

  gl::Texture sTexture;
  sTexture = gl::Texture(loadImage(loadAsset("texture.jpg")));

  cinder::TriMesh mySphere;
  ObjLoader loader( loadFile( "mySphere/sphere.obj" ) );
  loader.load( &mySphere );
  gl::draw( mySphere );

我知道mySphere包含纹理坐标作为 vector ,我需要将纹理绑定(bind)到对象,但是我找不到一个清晰的示例。我尝试过的所有事情都让我留下了白色的圆圈。

谢谢。

最佳答案

找到了我的解决方案。我正在使用sTexture.bind();但是sTexture.enableAndBind();是必需的。

 gl::Texture sTexture;
 sTexture = gl::Texture(loadImage(loadAsset("texture.jpg")));
 sTexture.enableAndBind();
 cinder::TriMesh mySphere;
 ObjLoader loader( loadFile( "mySphere/sphere.obj" ) );
 loader.load( &mySphere );
 gl::draw( mySphere );
 sTexture.unbind();

08-25 12:27