OpenGL设计房间 (虚拟现实大作业)

嘿嘿,课内虚拟现实课程的大作业,做了一个基于opengl房间,参考网上的一些资料,再进行一些扩充。还有一个unity3d的大作业将在之后上传。

项目说明:

本项目基于OpenGL实现,编辑器VS,使用gl/glut.h库。

实现up键前进,down键后退,left左移,right右移,w视角上转,s视角下转,a左转,d右转,o关灯或开灯。具体实现内容包含纹理映射、光照、材质、控制浏览,并显示墙壁、玻璃、卧室、客厅、厨房中二十余种物体。

效果展示:

部分代码:

主函数:

void main(int argc, char* argv[]){
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
    glutInitWindowSize(800, 600);
    glutInitWindowPosition(100, 100);
    glutCreateWindow("opengl room");
    init();
    glutReshapeFunc(reshape);
    glutSpecialFunc(SpecialKeys);
    glutKeyboardFunc(processNormalKeys);
    glutDisplayFunc(draw);
    glutMainLoop();
}

 按键:

void processNormalKeys(unsigned char key, int x, int y) {
    switch (key)
    {
    case 'w':
        rotate_x -= 5;
        break;
    case 's':
        rotate_x += 5;
        break;
    case 'a':
        rotate_y -= 1;
        break;
    case 'd':
        rotate_y += 1;
        break;
    case 'o':
        lflag = !lflag;
        break;
    default:
        break;
    }
    // 刷新
    glutPostRedisplay();
}

/*生成棋盘纹理*/
void makeCheckImage(void) {
    int i, j, c;
    for (i = 0; i < checkImageHeight; i++) {
        for (j = 0; j < checkImageWidth; j++) {
            c = ((((i & 0x8) == 0) ^ ((j & 0x8)) == 0)) * 255;
            checkImage[i][j][0] = (unsigned char)c;
            checkImage[i][j][1] = (unsigned char)c;
            checkImage[i][j][2] = (unsigned char)c;
            checkImage[i][j][3] = (unsigned char)c;
        }
    }
}

完整代码和详细资料放在:🍞正在为您运送作品详情

欢迎下载交流

  • 10
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名大学生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值