Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opengl-如何在3d不规则对象上放置纹理_C++_Opengl_3d_Glut - Fatal编程技术网

C++ opengl-如何在3d不规则对象上放置纹理

C++ opengl-如何在3d不规则对象上放置纹理,c++,opengl,3d,glut,C++,Opengl,3d,Glut,我必须在盖特林机枪被射击的地方制作动画(不必太复杂,因为这只是一种练习)。我画了我的枪的基本版本,看起来像这样: 不用担心颜色——我这样做是为了能够看到枪的特定部件的EGDE在哪里。现在,我想通过使用一些纹理(莫罗或类似金属色的东西)或其他颜色使它看起来更好。我知道如何加载纹理以及如何将其用于2d对象,但我不知道是否有可能将此纹理用于我的整个图形,还是必须单独使用纹理用于每个部分?这是我的代码,对应于从bmp文件加载纹理并使其能够使用: void initTexture(string file

我必须在盖特林机枪被射击的地方制作动画(不必太复杂,因为这只是一种练习)。我画了我的枪的基本版本,看起来像这样:

不用担心颜色——我这样做是为了能够看到枪的特定部件的EGDE在哪里。现在,我想通过使用一些纹理(莫罗或类似金属色的东西)或其他颜色使它看起来更好。我知道如何加载纹理以及如何将其用于2d对象,但我不知道是否有可能将此纹理用于我的整个图形,还是必须单独使用纹理用于每个部分?这是我的代码,对应于从bmp文件加载纹理并使其能够使用:

void initTexture(string fileName)
{
    loadBmp(fileName.c_str());
    textureId = 13;
    glBindTexture(GL_TEXTURE_2D, textureId); //Tell OpenGL which texture to edit
    glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    //Map the image to the texture
    glTexImage2D(GL_TEXTURE_2D,                //Always GL_TEXTURE_2D
                 0,                            //0 for now
                 GL_RGB,                       //Format OpenGL uses for image
                 tex.info.biWidth, tex.info.biHeight,  //Width and height
                 0,                            //The border of the image
                 GL_RGB, //GL_RGB, because pixels are stored in RGB format
                 GL_UNSIGNED_BYTE, //GL_UNSIGNED_BYTE, because pixels are stored
                                   //as unsigned numbers
                 tex.px);               //The actual pixel data

}

loadBmp()是加载位图文件的函数。我试着在互联网和stackoverflow上搜索一些东西,但是所有的Exmaple都是关于立方体或球体的,这对我没有帮助。如何在此图形上放置纹理?

纹理贴图需要(手动)为每个顶点指定纹理坐标。有一些方法可以自动生成纹理坐标,或者在没有纹理坐标的情况下,通过给每个人脸一个单独的像素(迪士尼动画开创了他们的计算机动画电影的后一种方法)

由于您没有指定用于建模的程序,我将向您介绍一些有关Blender纹理UV贴图的教程

请不要告诉我你给你的枪“编码”,因为这是错误的,错误的,错误的


获得纹理坐标后,将其作为另一个顶点属性传递给OpenGL。

我知道这是错误的,但这是我的做法。我必须只使用OpenGL绘制这一切,而不加载任何模型。我知道这很愚蠢,但我能说什么-我只是不得不这么做…:(@Blood:家庭作业?那就告诉他们教你现实世界中的期望——没有人硬编码模型。还告诉他们他们不能指望本科生解决问题,这些问题仍然是活跃的学术研究。你当然可以使用一些技巧,比如给每个桶赋予自己的纹理和使用圆柱形纹理c坐标。你错了。我已经发布了这个问题的答案。请查看