码迷,mamicode.com
首页 > 其他好文 > 详细

OpenGL入门程序(五)

时间:2018-05-09 01:09:31      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:测试   closed   而不是   pen   isp   旋转   内容   绘制   学习   

1、OpenGl的变化(移动、旋转、缩放等)都是通过矩阵乘法实现的,均可在当前矩阵的基础上乘以一个新的矩阵得以实现。

2、绘制一个三维物体的流程:

  本节内容比较枯燥,暂时学习到此

技术分享图片
static int day = 200; // day的变化:从0到359
void Test3DChange(void)
{
    //启动深度测试 ,启动深度检测后,无法看到绘制的内容,暂时不知为啥? 
    //glEnable(GL_DEPTH_TEST);

    //清除颜色 与 深度缓冲
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    //操作投影矩阵
    glMatrixMode(GL_PROJECTION);

    //把当前矩阵设为单位矩阵
    glLoadIdentity();

    //将当前的可是空间设置为透视空间
    //各个参数的含义,暂且不做理解,待以后深入学习后再理解
    //角度,视景体的宽高比,沿z轴方向的两裁面之间的距离的近处,沿z轴方向的两裁面之间的距离的远处
    gluPerspective(75, 1, 1, 400000000);

    //在进行变换前,先设置当前操作的矩阵为“模型视图矩阵”
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0, -200000000, 200000000, 0, 0, 0, 0, 0, 1);

    // 绘制红色的“太阳”
    glColor3f(1.0f, 0.0f, 0.0f);
    glutSolidSphere(69600000, 20, 20);
    // 绘制蓝色的“地球”
    glColor3f(0.0f, 0.0f, 1.0f);
    glRotatef(day / 360.0*360.0, 0.0f, 0.0f, -1.0f);
    glTranslatef(150000000, 0.0f, 0.0f);
    glutSolidSphere(15945000, 20, 20);
    // 绘制黄色的“月亮”
    glColor3f(1.0f, 1.0f, 0.0f);
    glRotatef(day / 30.0*360.0 - day / 360.0*360.0, 0.0f, 0.0f, -1.0f);
    glTranslatef(38000000, 0.0f, 0.0f);
    glutSolidSphere(4345000, 20, 20);

    //表示让前面的OpenGL命令立即执行(而不是让它们在缓冲区等待),
    glFlush();
}
View Code

技术分享图片

OpenGL入门程序(五)

标签:测试   closed   而不是   pen   isp   旋转   内容   绘制   学习   

原文地址:https://www.cnblogs.com/luguoshuai/p/9011825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!