gpt4 book ai didi

c++ - 初学者的 opengl 多纹理

转载 作者:行者123 更新时间:2023-11-28 07:19:14 24 4
gpt4 key购买 nike

我有一个需要多个纹理的动画项目,我打算看到所有这些,但我的模型上只有 1 个纹理覆盖。我看不到对象上的所有 tga 文件。

    GLuint LoadTexture(char *TexName)
{
TGAImg Img; // Image loader

// Load our Texture
if(Img.Load(TexName)!=IMG_OK)
return -1;

glGenTextures(1,textures); // Allocate space for texture
glBindTexture(GL_TEXTURE_2D,textures[0]); // Set our Tex handle as current

// Create the texture
if(Img.GetBPP()==24)
glTexImage2D(GL_TEXTURE_2D,0,3,Img.GetWidth(),Img.GetHeight(),0,GL_RGB,GL_UNSIGNED_BYTE,Img.GetImg());
else if(Img.GetBPP()==32)
glTexImage2D(GL_TEXTURE_2D,0,4,Img.GetWidth(),Img.GetHeight(),0,GL_RGBA,GL_UNSIGNED_BYTE,Img.GetImg());
else
return -1;

// Specify filtering and edge actions
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);

return textures[0];
}

void Draw()
{
glEnable(GL_TEXTURE_2D);

glGenTextures(17,textures);

for (int i = 0; i<17; i++){
textures[i] = LoadTexture(textureNames[i
glBindTexture(GL_TEXTURE_2D, textures[i]);
}

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3,GL_FLOAT,0,triangleArr);
glNormalPointer(GL_FLOAT, 0, normals);
glDrawArrays(GL_TRIANGLES, 0, TotalConnectedTriangles);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
}

void initialize ()
{
glViewport(0, 0, 500, 500);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, 1, 0.1, 1000.0);
glMatrixMode(GL_MODELVIEW);

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glShadeModel( GL_SMOOTH );
glEnable( GL_DEPTH_TEST );

glEnable(GL_TEXTURE_2D);
textures[textureIndex] = LoadTexture(textureNames[textureIndex]);
glBindTexture(GL_TEXTURE_2D, textures[textureIndex]);

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);


glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, textureArr);

}
</code>`enter code here`

我不确定是否需要发布我的 obj 文件?

最佳答案

查看 glActiveTexture 的文档.在循环中调用 glBindTexture 并不像您想象的那样。

关于c++ - 初学者的 opengl 多纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19756742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com