#include <stdlib.h>
#include <GL/glut.h>
#include<iostream>
using namespace std;
GLfloat roate = 0.0;// set rote of roate ying yu bu hao  bu zhuang le 设置旋转速率
GLfloat rote = 0.0;//shezhi旋转角度
GLfloat anglex = 0.0;//X 轴旋转
GLfloat angley = 0.0;//Y 轴旋转
GLfloat anglez = 0.0;//Z 轴旋转
GLint WinW = 400;
GLint WinH = 400;
GLfloat oldx;//当左键按下时记录鼠标坐标
GLfloat oldy;
void init(void)
{glClearColor(1.0, 1.0, 1.0, 1.0); //背景黑色
}
void display(void)
{glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 0.0, 0.0); //画笔红色glLoadIdentity();  //加载单位矩阵  gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);glRotatef(rote, 0.0f, 1.0f, 0.0f);glRotatef(anglex, 1.0, 0.0, 0.0);glRotatef(angley, 0.0, 1.0, 0.0);glRotatef(anglez, 0.0, 0.0, 1.0);glutWireTeapot(2);rote += roate;//glRotatef(angle, 0.0, 1.0, 0.0);//angle += 1.0f;glutSwapBuffers();
}
void reshape(int w, int h)
{glViewport(0, 0, (GLsizei)w, (GLsizei)h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 20.0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}
void mouse(int button, int state, int x, int y)
{if (button == GLUT_LEFT_BUTTON){if (state == GLUT_DOWN){roate = 0;rote = 0;oldx = x;//当左键按下时记录鼠标坐标  oldy = y;cout << "left" << endl;}}if (button == GLUT_RIGHT_BUTTON){if (state == GLUT_DOWN){roate += 1.0f;cout << "right" << endl;}}}
void motion(int x, int y)
{GLint deltax = oldx - x;GLint deltay = oldy - y;anglex += 360 * (GLfloat)deltax / (GLfloat)WinW;//根据屏幕上鼠标滑动的距离来设置旋转的角度  angley += 360 * (GLfloat)deltay / (GLfloat)WinH;anglez += 360 * (GLfloat)deltay / (GLfloat)WinH;oldx = x;//记录此时的鼠标坐标,更新鼠标坐标  oldy = y;//若是没有这两句语句,滑动是旋转会变得不可控  glutPostRedisplay();glutPostRedisplay();
}
int main(int argc, char** argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);glutInitWindowSize(600, 600);glutInitWindowPosition(100, 100);glutCreateWindow(argv[0]);init();glutDisplayFunc(display);glutReshapeFunc(reshape);glutMouseFunc(mouse);glutMotionFunc(motion);glutIdleFunc(display);glutMainLoop();return 0;
}

OpenGL:画个水壶相关推荐

  1. opengl画圆柱体、圆锥等并使用四元数旋转

    opengl画圆锥和圆柱体 具体资源欢迎下载:https://download.csdn.net/download/qq_32563773/13077923 画圆锥 如要画出想画的立方体,必须计算出来 ...

  2. OpenGL画三角形

    目录 OpenGL窗口 OpenGL三角形 OpenGL画圆 OpenGL窗口 [代码总览] glfw初始化.配置.创建窗口 glad初始化 渲染循环,检测输入并给窗口涂颜色 清理操作 // 渲染循环 ...

  3. 平移计算机图形学代码注释,求代码注释:计算机图形学的OpenGL画四面体。高手来吧。争取每句都注释下。谢谢...

    求代码注释:计算机图形学的OpenGL画四面体.高手来吧.争取每句都注释下.谢谢 答案:3  信息版本:手机版 解决时间 2018-12-20 05:00 已解决 2018-12-20 01:58 求 ...

  4. OpenGL 画出雷达动态扫描效果(二) 非底图

    OpenGL 画出雷达动态扫描效果(一)中给出了已一张图片作为底图的雷达扫面程序 如果有漂亮的雷达底图的话,效果应该非常不错的,另外也可以直接手绘雷达框架 效果如下 雷达主体代码 glLineWidt ...

  5. 使用OpenGL画出四边形不完整的解决

    记录一个使用OpenGL做实验时遇到的小坑. 问题描述: 想要使用OpenGL画一个正方体,效果如下: 其实现方式是通过三维坐标分别画出它的每个面 于是我们使用以下代码来画出一个正方形平面: glBe ...

  6. OpenGL画太阳系

    分享一个OpenGL画太阳系的代码. #include <GL/glut.h> #include <GL/SOIL.h> #include <stdio.h> #i ...

  7. OpenGL 画圆球

    OpenGL 画圆球 只需要两个点,然后使用GL_TRIANGLE_STRIP(按顺序依次组成三角形)方式画三角形就可以了 从上至下,一圈一圈往下计算 球面点计算公式 // x=x0+r sinθco ...

  8. OpenGL 画荷花

    本文参考 基于OpenGL的荷花开放过程模拟_刘金定 (这是百度文库的链接,读者可自己搜索) 我们在这里会实现简单的OpenGL画莲花过程,并实现简单的莲花绽放过程,对学习OpenGL和3D数学有着极 ...

  9. Opengl画衣服1

    学习自 http://www.linuxidc.com/Linux/2013-02/78959p3.htm OpenGL画衣服 左键右键功能可以 继续添加菜单功能 // Homework.cpp : ...

最新文章

  1. 正则验证车牌号码,包括新能源车牌
  2. 数据结构学习笔记:顺序表的删除操作及其演化题目总结
  3. 无显示器u盘安装centos_最新版 CentOS 8.1.1911 安装教程及常见问题图文详解
  4. CSS如何让DIV的宽度随内容的变化
  5. php抓取带帐号密码,PHP实现抓取迅雷VIP账号的方法_PHP
  6. linux删除磁盘后刷新,linux – 短暂的文件是否刷新到磁盘?
  7. mysql+安全性语言实验,实验四--数据库的安全性、完整性控制
  8. 蜡烛图plotly_Python数据分析:基于Plotly的动态可视化绘图简介,目录书摘
  9. mysql(mariadb)的安装与使用,mysql相关命令,mysql数据类型
  10. vue展示日历 考勤展示_vue实现简单的日历效果
  11. 磁盘不见了只剩一个c盘_电脑磁盘忽然只剩c盘怎么回事_win10除了c盘都不见了的处理方法...
  12. Docker 配置加速器
  13. java后端getmonth_Java中的MonthDay getMonth()方法
  14. 维度打击,机器学习中的降维算法:ISOMAP MDS
  15. 《统计学习方法(第二版)》学习笔记 第五章 决策树
  16. Windows 10 运行python弹出windows应用商店
  17. 内存类型:UDIMM、RDIMM、LRDIMM
  18. 正方教务系统换数据库服务器,自己山寨正方教务系统数据库连接解密程序
  19. html5级联菜单,h5级联下拉、分类筛选
  20. DirectoryInfo 类

热门文章

  1. 解决Shockwave flash在谷歌浏览器上崩溃的问题
  2. Oracle分析函数参考手册
  3. WebSocket知识点总结
  4. Spring MVC 实践 - Component
  5. 虚拟机linux挂载光盘显示:mount: you must specify the filesystem type
  6. 互斥锁、死锁、递归锁、信号量、Event
  7. 常见蓝屏故障及解决办法
  8. 送给前端开发者的一份新年礼物
  9. [转载]敏捷开发之Scrum扫盲篇
  10. Redhat 6 git 服务器配置(gitweb)