绑定多个纹理到不同的四边形的OpenGL
创始人
2024-11-20 23:00:56
0

在OpenGL中,可以使用纹理映射(texture mapping)来将纹理绑定到四边形上。下面是一个示例代码,演示了如何绑定多个纹理到不同的四边形:

#include 

GLuint texture1, texture2;

void loadTexture(const char* filename, GLuint& texture)
{
    // 加载图片
    FILE* file = fopen(filename, "r");
    unsigned char* imageData;
    // 读取图片数据
    // ...

    // 生成纹理
    glGenTextures(1, &texture);
    glBindTexture(GL_TEXTURE_2D, texture);

    // 设置纹理参数
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    // 加载图片数据到纹理
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, imageData);
    glGenerateMipmap(GL_TEXTURE_2D);

    // 释放图片数据
    // ...
}

void init()
{
    // 加载纹理
    loadTexture("texture1.jpg", texture1);
    loadTexture("texture2.jpg", texture2);

    glEnable(GL_TEXTURE_2D);
    glEnable(GL_DEPTH_TEST);
}

void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

    // 绑定第一个纹理
    glBindTexture(GL_TEXTURE_2D, texture1);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 0.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 0.0f);
    glEnd();

    // 绑定第二个纹理
    glBindTexture(GL_TEXTURE_2D, texture2);
    glBegin(GL_QUADS);
    glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f);
    glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, -1.0f, 0.0f);
    glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 0.0f);
    glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 0.0f);
    glEnd();

    glFlush();
    glutSwapBuffers();
}

int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
    glutInitWindowSize(800, 600);
    glutCreateWindow("OpenGL Texture Mapping");

    init();
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}

这个示例中,loadTexture函数用于加载图片并生成纹理。init函数用于初始化OpenGL环境和加载纹理。display函数用于绘制场景,其中通过glBindTexture函数将纹理绑定到当前的活动纹理单元(GL_TEXTURE0)上,并使用glTexCoord2f函数为每个顶点指定纹理坐标。在main函数中,使用Glut库创建窗口并设置显示回调函数为display函数,然后进入主循环。

你可以根据自己的需求,修改纹理文件路径和顶点坐标,以满足你的具体需求。

相关内容

热门资讯

2026版辅助挂!黑科技软件大... 2026版辅助挂!黑科技软件大全(辅助)竟然真的是有辅助攻略(真实有挂)1、黑科技软件大全模拟器是什...
2026版技巧!大众互娱脚本(... 2026版技巧!大众互娱脚本(辅助)切实存在有辅助神器(有挂解惑)1、大众互娱脚本免费脚本咨询教程、...
近日!边锋嘉兴辅助(辅助)切实... 近日!边锋嘉兴辅助(辅助)切实是真的有辅助脚本(有挂规律)所有人都在同一条线上,像星星一样排成一排,...
一直以来!上饶窝龙辅助(辅助)... 一直以来!上饶窝龙辅助(辅助)切实真的是有辅助技巧(有挂分享)1、许多玩家不知道上饶窝龙辅助辅助怎么...
明白辅助挂!开心斗一番破解版(... 明白辅助挂!开心斗一番破解版(辅助)总是真的是有辅助插件(有挂教学)1、在开心斗一番破解版插件功能辅...
无独有偶!花花生活圈怎么开挂(... 无独有偶!花花生活圈怎么开挂(辅助)果然存在有辅助神器(竟然有挂)该软件可以轻松地帮助玩家将花花生活...
2026版软件!山西扣点免费辅... 2026版软件!山西扣点免费辅助(辅助)本来存在有辅助脚本(详细教程)暗藏猫腻,小编详细说明山西扣点...
黑科技攻略!悟空大厅辅助(辅助... 黑科技攻略!悟空大厅辅助(辅助)切实真的是有辅助攻略(真的有挂);1、不需要AI权限,帮助你快速的进...
2026版总结!微信小程序辅助... 2026版总结!微信小程序辅助新天道辅助(辅助)一直是有辅助技巧(有挂功能)1、点击下载安装,微信小...
第三方辅助挂!三哥玩辅助器软件... 第三方辅助挂!三哥玩辅助器软件(辅助)果然是真的有辅助软件(有挂教学)1)三哥玩辅助器软件辅助插件:...