OpenGL---物体变换


#include <windows.h> 
#include <gl/Gl.h>
#include <gl/Glu.h>
#include <gl/glut.h>

#pragma comment(lib, "glut.lib")

#ifndef WINDOW_WIDTH
#define WINDOW_WIDTH    800       //为窗口宽度定义的宏,以方便在此处修改窗口宽度
#define WINDOW_HEIGHT   600       //为窗口高度定义的宏,以方便在此处修改窗口高度
#endif


void myKeyboard(unsigned char key, int x, int y)
{
    glMatrixMode(GL_MODELVIEW);
    glMatrixMode(GL_PROJECTION);
    switch(key)
    {
        case 'a': case 'A': glTranslated(0.1,  0,    0); break;     //向左平移0.1
        case 'd': case 'D': glTranslated(-0.1, 0,    0); break;     //向右平移0.1
        case 'w': case 'W': glTranslated(0,    0.1,  0); break;     //向上平移0.1
        case 's': case 'S': glTranslated(0,    -0.1, 0); break;     //向下平移0.1
        case 'q': case 'Q': glTranslated(0,    0,  0.1); break;     //向外平移0.1
        case 'e': case 'E': glTranslated(0,    0, -0.1); break;     //向里平移0.1

        case 'j': case 'J': glRotated(10,  0,  1,   0); break;      //绕y轴旋转10度
        case 'l': case 'L': glRotated(10,  0,  -1,  0); break;
        case 'i': case 'I': glRotated(10,  1,  0,   0); break;      //绕x轴旋转10度
        case 'k': case 'K': glRotated(10, -1,  0,   0); break;
        case 'u': case 'U': glRotated(10,  0,  0,   1); break;      //绕z轴旋转10度
        case 'o': case 'O': glRotated(10,  0,  0,  -1); break;

        case 'z': case 'Z': glScalef(1.5, 1.5, 1.5); break;         //放大
        case 'x': case 'X': glScalef(0.5, 0.5, 0.5); break;         //缩小

        default: break;
    }

    glutPostRedisplay();      //重新绘制
}

void myDisplay(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glutWireTeapot(0.3);    //绘制茶壶
    //glTranslated(0, 0, 0);
    glFlush(); 
    glutSwapBuffers();      //显示刚才绘制的图像,双缓冲
} 

int main(int argc, char *argv[]) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE); 
    glutInitWindowPosition(50, 50); 
    glutInitWindowSize(WINDOW_WIDTH, WINDOW_HEIGHT);
    glutCreateWindow("DEMO"); 
    glClearColor(1, 0, 0, 0);            //背景颜色为红色
    glClear(GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_ALWAYS);

    glutKeyboardFunc(myKeyboard);
    glutDisplayFunc(myDisplay); 

    glutMainLoop(); 
    return 0; 
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值