专栏中心

EEPW首页 > 专栏 > OpenGL学习笔记——03

OpenGL学习笔记——03

发布人:0750long 时间:2009-07-13 来源:工程师 发布文章
OpenGL学习笔记——03

 

#include <GL/glut.h>
#include <stdlib.h>

static int year = 0, day = 0;

void init()
{
 glClearColor(0.0, 0.0, 0.0, 0.0);
 glShadeModel(GL_FLAT);
}

void change(void)
{
 year = (year + 1) % 360;
 day = (day + 1) % 360;
 glutPostRedisplay();
}

void display(void)
{
 glClear(GL_COLOR_BUFFER_BIT);
 glColor3f(1.0, 1.0, 1.0);

 glPushMatrix();
 glRotatef((GLfloat) year, 0.0, 1.0, 0.0);
 glutWireSphere(1.0, 20, 16);
 glTranslatef(2.0, 0.0, 0.0);
 glRotatef((GLfloat) day, 0.0, 1.0, 0.0);
 glutWireSphere(0.2, 10, 8);
 glPopMatrix();
 glutSwapBuffers(); 
}

void reshape(int w, int h)
{
 glViewport(0, 0, (GLsizei) w, (GLsizei) h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 //glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
 gluPerspective(60.0, (GLfloat) w/(GLfloat)h, 1.0, 20.0);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 gluLookAt(0.0, 5.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
}

void keyboard(unsigned char key, int x, int y)
{
 switch (key)
 {
  
 case 'd' :
  day = (day + 10) % 360;
  glutPostRedisplay();
  break;
 case 'y' :
  year = (year + 10) % 360;
  glutPostRedisplay();
  break;
  
 case 'a':
  glutIdleFunc(change);
  break;
 case 's':
  glutIdleFunc(NULL);
  break;
 default:
  break;
 }
}

int main(int argc, char** argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
 glutInitWindowSize(500, 500);
 glutInitWindowPosition(100, 100);
 glutCreateWindow("OpenGL Test");
 init();
 glutDisplayFunc(display);
 glutReshapeFunc(reshape);
 //glutMouseFunc(mouse);
 glutKeyboardFunc(keyboard);
 glutMainLoop();
 return 0;
}

按A键自动旋转,按S键停止,按D键小球自转,按Y键小球绕着大球转。

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

爱立信或收购英特尔业务

2025-08-21

iPhone将彻底取消拍摄按钮

2025-08-21

瑞萨的超低功耗RA4C1 MCU具备高级安全性和专用外设集

\"逐点半导体\"携手\"真我\"为P4系列智能手机带来旗舰级视觉体验

PDIUSBD12 USB接口器件固件编程指南

Microchip WiFi模塊(MRF24WB0Mx系列) 的連線種類與方法—AdHoc Mode的三種連線方式

PDIUSBD12 USB接口器件常见问题解答

利用PIC®单片机实现智能LED照明

中星联华科技受邀参加第三届信息通信仪器仪表产业技术论坛、信息通信测试仪器仪表专委会一届二次委员会

“Albertgreen”的LED显示HEX视频

视频 2012-05-02

PDIUSBD12 SMART 套件用户指南

东芝推出小型封装车载光继电器,可实现车载电池系统1500V输出耐压

台积电2nm制程计划将对所有客户“不打折、不议价”,价格比3nm高出约50%-66%

2025-08-21

PDIUSBD12 USB接口器件win98驱动程序

从“ 正向设计” 角度如何对“ 电子热管理”进行全局诊断

基于PIC32的VGA.WVGA图形开发工具

\"标普全球汽车\"发布思想领袖峰会,打造智能汽车未来

PDIUSBD12 USB接口器件固件编程指南 (英)

特斯拉Robotaxi服务Bug频频出现,系统性问题究竟是谁的锅?

2025-08-21

PIC®单片机与LED驱动及控制相关外设介绍(上)

更多 培训课堂
更多 焦点
更多 视频

技术专区