主机公园 wordpress,seo是什么部门,谷歌做网站,直播平台怎么搭建程序示例精选 COpenGL三维显示镜面反射光线漫反射实例 如需安装运行环境或远程调试#xff0c;见文章底部个人QQ名片#xff0c;由专业技术人员远程协助#xff01; 前言
这篇博客针对《COpenGL三维显示镜面反射光线漫反射实例》编写代码#xff0c;代码整洁#xff0c;… 程序示例精选 COpenGL三维显示镜面反射光线漫反射实例 如需安装运行环境或远程调试见文章底部个人QQ名片由专业技术人员远程协助 前言
这篇博客针对《COpenGL三维显示镜面反射光线漫反射实例》编写代码代码整洁规则易读。 学习与应用推荐首选。 运行结果 文章目录
一、所需工具软件 二、使用步骤 1. 主要代码 2. 运行结果 三、在线协助
一、所需工具软件 1. Python 2. Pycharm
二、使用步骤
代码如下示例
void init() {glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);glutInitWindowSize(500, 500);glutCreateWindow(ObjLoader);glEnable(GL_DEPTH_TEST);//glDisable(GL_DEPTH_TEST);glShadeModel(GL_SMOOTH); setLightRes();glEnable(GL_DEPTH_TEST);// objModel.Init();glDepthFunc(GL_LEQUAL); // 设置深度测试函数
}void display() {glColor3f(1.0, 1.0, 1.0);glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();// 应用平移和缩放glTranslatef(transX, transY, -270.0f); // 应用水平和垂直平移141.0fglScalef(zoomFactor, zoomFactor, zoomFactor); // 应用缩放setLightRes();glPushMatrix();// 更新gluLookAt以使用vertDegree进行垂直旋转float vertRad c * vertDegree; // 将vertDegree转换为弧度gluLookAt(r * cos(c * degree) * cos(vertRad), r * sin(vertRad), r * sin(c * degree) * cos(vertRad),0.0f, 0.0f, 0.0f,0.0f, 1.0f, 0.0f);// 根据计算出的中心坐标平移模型glTranslatef(-objModel.center[0], -objModel.center[1], -objModel.center[2]);objModel.Draw();glPopMatrix();glutSwapBuffers();
}void reshape(int width, int height) {glViewport(0, 0, width, height);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60.0f, (GLdouble)width / (GLdouble)height, 1.0f, 200.0f);glMatrixMode(GL_MODELVIEW);
}// 在全局范围内定义一个变量来追踪当前鼠标操作
enum MouseAction { NONE, ROTATE, TRANSLATE };
MouseAction currentAction NONE;void mouseButton(int button, int state, int x, int y) {if (state GLUT_DOWN) {if (button GLUT_LEFT_BUTTON) {currentAction ROTATE;oldPosX x;oldPosY y;}else if (button GLUT_RIGHT_BUTTON) {currentAction TRANSLATE;oldRightPosX x;oldRightPosY y;}}else if (state GLUT_UP) {currentAction NONE;}
}void mouseMove(int x, int y) {if (currentAction ROTATE) {int deltaX x - oldPosX;int deltaY y - oldPosY;degree deltaX;vertDegree deltaY;oldPosX x;oldPosY y;}else if (currentAction TRANSLATE) {transX (x - oldRightPosX) * 0.01f;transY - (y - oldRightPosY) * 0.01f;oldRightPosX x;oldRightPosY y;}glutPostRedisplay();
}//滚轮没反应
void mouseWheel(int wheel, int direction, int x, int y) //
{cout test endl;cout Mouse wheel event detected. Direction: direction endl;if (direction 0) {zoomFactor 0.1f; // 增加缩放因子}else {zoomFactor - 0.1f; // 减小缩放因子}// 防止缩放因子小于等于0if (zoomFactor 0.1f) {zoomFactor 0.1f;}glutPostRedisplay();
}void processNormalKeys(unsigned char key, int x, int y) {switch (key) {case w: // Pressing w key, zoom incout Zoom factor increased by 0.1\n; zoomFactor 0.1f;break;case s: // Pressing s key, zoom outzoomFactor - 0.1f;if (zoomFactor 0.1f) {zoomFactor 0.1f; // Prevent zoomFactor from going below 0.1}break;case 27: // Pressing the Esc key (ASCII value 27) to exit the programexit(0);break;// Add more cases for handling other keys as needed}glutPostRedisplay();
}void specialKeys(int key, int x, int y) {switch (key) {case GLUT_KEY_UP:// 按下上方向键进行相应操作break;case GLUT_KEY_DOWN:// 按下下方向键进行相应操作break;}glutPostRedisplay();
}void myIdle() {glutPostRedisplay();
}int main(int argc, char* argv[]) {glutInit(argc, argv);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMouseFunc(mouseButton);glutMotionFunc(mouseMove);glutMouseWheelFunc(mouseWheel);glutKeyboardFunc(processNormalKeys); // 处理一般的键盘事件glutSpecialFunc(specialKeys); // 处理特殊键盘事件glutIdleFunc(myIdle);// 在此处调用 CalculateCenter() 函数objModel.CalculateCenter();// 打印模型的中心坐标objModel.PrintCenter();// 计算并打印模型长宽高objModel.CalculateBoundingBox();objModel.PrintBoundingBox();glutMainLoop();return 0;
}
运行结果 三、在线协助
如需安装运行环境或远程调试见文章底部个人 QQ 名片由专业技术人员远程协助 1远程安装运行环境代码调试 2Visual Studio, Qt, C, Python编程语言入门指导 3界面美化 4软件制作 5云服务器申请 6网站制作 当前文章连接https://blog.csdn.net/alicema1111/article/details/132666851 个人博客主页https://blog.csdn.net/alicema1111?typeblog 博主所有文章点这里https://blog.csdn.net/alicema1111?typeblog
博主推荐 Python人脸识别考勤打卡系统 https://blog.csdn.net/alicema1111/article/details/133434445 Python果树水果识别https://blog.csdn.net/alicema1111/article/details/130862842 PythonYolov8Deepsort入口人流量统计https://blog.csdn.net/alicema1111/article/details/130454430 PythonQt人脸识别门禁管理系统https://blog.csdn.net/alicema1111/article/details/130353433 PythonQt指纹录入识别考勤系统https://blog.csdn.net/alicema1111/article/details/129338432 Python Yolov5火焰烟雾识别源码分享https://blog.csdn.net/alicema1111/article/details/128420453 PythonYolov8路面桥梁墙体裂缝识别https://blog.csdn.net/alicema1111/article/details/133434445 PythonYolov5道路障碍物识别https://blog.csdn.net/alicema1111/article/details/129589741 PythonYolov5跌倒检测 摔倒检测 人物目标行为 人体特征识别https://blog.csdn.net/alicema1111/article/details/129272048