青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-38  評論-23  文章-0  trackbacks-0

所有的lesson 都將基于lesson_1中的頭文件而寫.

lesson_4的內容在lesson_3的基礎上添加了部分內容而寫成的.這課當中,將會使用到模型變換的旋轉變換.
前幾次,曾使用了glTranslatef(d)來移動模型.這次將使用glRotatef 來旋轉模型.而為了看到一個動畫的效果,將注冊一個空閑回調函數,使得角度不斷自增.

#include "openglglut.h"

/*
** opengl 教程第四課內容
** 在窗口的左邊部分繪制一個多彩的三角形,它將使用平滑著色
** 在窗口的右邊部分繪制一個藍色的正方形,它將使用單調著色
** 使得左邊的三角形繞Y軸不停旋轉
** 使得右邊的正方形繞x軸不停旋轉
*/

double yRot=0.0;    //三角形繞y軸旋轉的角度
double xRot=0.0;    //三角形繞x軸旋轉的角度
int main(int argc, char** argv)
{
    
/** 初始化窗口 并創建窗口*/
    createWindow(
"opengl lesson_4",&argc,argv);

    
/** 注冊glut的一些函數 */
    glutReshapeFunc(glutResize);     
//窗口調整函數 使得調整后圖形顯示不發生改變
    glutIdleFunc(glutIdle);          //空閑回調函數 使得在空閑時間內進行一些操作
    glutDisplayFunc(glutDisplay);    //重繪函數     使得可以在窗口中繪制圖形
    glutSpecialFunc(glutSpecial);    //特殊按鍵函數 使得實現全屏/窗口切換
    /** 初始化opengl的一些操作*/
    InitOpenGL();

    
/** 進入仿真循環*/
    glutMainLoop();
}

/** 實現頭文件當中定義的繪制函數 繪制三角形和正方形 **/
void glutDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT 
| GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();                   
//將先初始化單位矩陣
    glPushMatrix();                     //將當前矩陣復制一個壓入棧頂,并保持當前矩陣不變
    
    glTranslatef(
-1.5,0.0,-6.0);
    glRotatef(yRot,
0.0,1.0,0.0);        //使得三角形繞y軸旋轉yRot角度

    
//決定三角形三個頂點的顏色值,三角形內部各個點的顏色將會是線性插值的
    glBegin(GL_TRIANGLES);             // 繪制三角形
        glColor3f(1.0f,0.0f,0.0f);     //使用紅色繪制上頂點
        glVertex3f( 0.0f1.0f0.0f); //上頂點
        glColor3f(0.0f,1.0f,0.0f);     //使用綠色繪制左下頂點
        glVertex3f(-1.0f,-1.0f0.0f); //左下
        glColor3f(0.0f,0.0f,1.0f);     //使用藍色繪制右下頂點
        glVertex3f( 1.0f,-1.0f0.0f); //右下
    glEnd();
    glPopMatrix();                     
//恢復當前矩陣為上一次push時的矩陣

    glTranslatef(
1.5f,0.0f,-6.0f);
    glRotatef(xRot,
1.0,0.0,0.0);       //使得正方形繞x軸旋轉xRot角度
    glColor3f(0.0f,0.0f,1.0f);         //將當前顏色值設置為藍色 繪制整個正方形
    glBegin(GL_QUADS);                 // 繪制正方形
        glVertex3f(-1.0f1.0f0.0f); // 左上
        glVertex3f( 1.0f1.0f0.0f); // 右上
        glVertex3f( 1.0f,-1.0f0.0f); // 左下
        glVertex3f(-1.0f,-1.0f0.0f); // 右下
    glEnd();

    glutSwapBuffers();                 
//強制繪圖命令執行繪制在緩沖區交換出來
}

/** 實現頭文件當中聲明的空閑回調函數*/
void glutIdle(void)
{
    yRot
+=0.2f;              //增加三角形旋轉角度
    xRot-=0.15f;              //減少正方形減少角度
    glutPostRedisplay();    //使得執行完該函數后調用重繪函數
}

最終的結果是:


末尾總結:
glRotatef(angle,x,y,z) 將為使得模型繞任意軸旋轉angle角度.它將會產生一個旋轉矩陣右乘當前矩陣.所以改變了當前矩陣.而為了使得繪制的時候左邊的三角形不影響到右邊正方形的變換矩陣故在繪制三角形之前使用glPushMatrix()保存當前矩陣,繪制完成之后使用glPopMatrix() 恢復之前的矩陣.當然也可以使用glLoadIdentity()設置當前矩陣為單位矩陣的方法來實現它..

其次,這次多了以個glIdleFunc() 注冊空閑回調函數.即在系統沒有其他事件處理的時候將處理這個函數,使得旋轉的角度不斷改變.

glPostRedisplay() 使得當前窗口將會進行重繪..根據角度的改變,從而使得我們看到的是一個旋轉當中的動畫效果

最后將說明一點的是:我曾在紅寶書看到一段內容:有時候為了實現連續的旋轉,我們可能會想到重復應用一個值很小的旋轉矩陣,這個會存在一個問題.就是誤差,使得變換累積結果.我們應該摒棄這種做法.即使用一個新的角度來變換.就將使用如下的方法:
glLoadIdentity();
glRotatef(new_angle,x,y,z);

只要new_angle=old_angle+offset
posted on 2009-07-17 16:33 米游 閱讀(610) 評論(0)  編輯 收藏 引用 所屬分類: OpenGL/OSG
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲一区二区伦理| 久久久久久一区| 久久综合成人精品亚洲另类欧美| 99re8这里有精品热视频免费| 亚洲激情欧美| 日韩一级黄色av| 亚洲在线成人精品| 欧美一级视频| 欧美 日韩 国产在线| 亚洲电影免费观看高清| 久久深夜福利免费观看| 嫩草国产精品入口| 日韩亚洲国产欧美| 亚洲欧美在线x视频| 久久精品国产精品亚洲综合| 另类国产ts人妖高潮视频| 欧美精品在线观看播放| 国产精品久久久久久久久果冻传媒| 国产精品最新自拍| 91久久久久久久久| 欧美一级大片在线免费观看| 欧美a级理论片| 亚洲尤物在线| 欧美激情综合五月色丁香小说 | 欧美激情精品久久久久久| 日韩视频一区| 久久九九热免费视频| 欧美人与性动交α欧美精品济南到| 国产精品a久久久久久| 亚洲精品一区二区三区在线观看| 亚洲图片激情小说| 久久人人爽国产| 日韩视频永久免费观看| 久久精品国产免费| 国产精品视频一二三| 最新亚洲视频| 久久久噜久噜久久综合| 一区二区三区国产精华| 欧美aa国产视频| 国产真实久久| 亚洲欧美视频在线观看视频| 欧美激情区在线播放| 久久精品国产在热久久| 国产精品你懂的在线欣赏| 亚洲伦伦在线| 欧美福利一区| 久久久噜噜噜久噜久久| 国产欧美日韩综合一区在线观看| 日韩亚洲欧美在线观看| 欧美国产一区二区在线观看| 欧美在线观看视频在线 | 国产亚洲成年网址在线观看| 一区二区三区久久| 欧美国产一区在线| 老牛影视一区二区三区| 狠狠久久婷婷| 免播放器亚洲一区| 久久激情五月丁香伊人| 国产日韩在线不卡| 久久精品视频99| 欧美一区二区三区在线视频 | 最新日韩欧美| 亚洲国产成人av在线| 久久这里有精品视频| 精品动漫一区二区| 免费黄网站欧美| 久久深夜福利免费观看| 亚洲第一在线综合在线| 欧美+亚洲+精品+三区| 久久综合给合| 亚洲区一区二区三区| 亚洲国产99| 欧美日韩精品免费观看视一区二区 | 狠狠综合久久| 欧美va亚洲va国产综合| 美女免费视频一区| 99热在线精品观看| 一本一道久久综合狠狠老精东影业| 欧美日韩综合在线| 欧美综合77777色婷婷| 久久gogo国模裸体人体| 在线精品视频免费观看| 亚洲国产精品热久久| 欧美日韩网站| 久久久噜噜噜久久中文字免| 亚洲精品少妇| 欧美大片va欧美在线播放| 亚洲国产日韩欧美综合久久| 亚洲人成7777| 国产精品永久| 欧美成人官网二区| 欧美日韩少妇| 久久视频一区| 欧美精品色综合| 午夜久久电影网| 蜜桃精品久久久久久久免费影院| 亚洲一级黄色| 玖玖玖国产精品| 欧美一区二区三区在| 久久一区中文字幕| 亚洲欧美国产一区二区三区| 久久亚洲高清| 羞羞漫画18久久大片| 免费黄网站欧美| 欧美伊人久久久久久午夜久久久久 | 日韩视频一区二区三区在线播放 | 国产精品99久久99久久久二8 | 欧美精品网站| 久久久国产一区二区| 欧美精品一区二区视频| 久久免费视频网站| 欧美性猛交xxxx免费看久久久| 久久综合五月天婷婷伊人| 欧美性做爰毛片| 亚洲二区在线观看| 韩国v欧美v日本v亚洲v | 欧美国产一区在线| 久久久久网址| 国产亚洲高清视频| 亚洲一区二区在线免费观看| 亚洲裸体在线观看| 麻豆9191精品国产| 久久亚洲综合色| 国产日韩精品久久| 亚洲一级黄色| 亚洲自拍偷拍网址| 欧美三区在线| av成人国产| 这里只有精品视频| 欧美精品性视频| 最新中文字幕一区二区三区| 亚洲黄色av| 欧美激情第五页| 亚洲精品1区2区| 99xxxx成人网| 欧美日韩福利视频| 亚洲午夜精品| 欧美日本韩国| 日韩视频欧美视频| 亚洲午夜一区二区三区| 欧美日韩你懂的| 一本色道久久综合亚洲精品婷婷| 中文日韩欧美| 国产精品伦子伦免费视频| 中文av一区二区| 欧美一区激情视频在线观看| 国产精品人人爽人人做我的可爱| 亚洲一区二区三区精品在线观看 | 91久久夜色精品国产网站| 亚洲精品久久久一区二区三区| 欧美.com| 99人久久精品视频最新地址| 国产精品99久久久久久久vr| 欧美日韩一级片在线观看| 亚洲社区在线观看| 久久精品国产清自在天天线| 一区二区视频免费完整版观看| 久久视频在线看| 亚洲精品国产无天堂网2021| 亚洲午夜精品视频| 国产一区二三区| 美国十次成人| 亚洲一二三区在线观看| 久久久精品欧美丰满| 在线成人中文字幕| 欧美色图天堂网| 久久电影一区| 亚洲精品视频免费观看| 久久精品成人| 亚洲肉体裸体xxxx137| 国产精品成av人在线视午夜片 | 欧美性感一类影片在线播放| 欧美一区二区三区视频免费| 欧美激情一区二区三区在线| 亚洲亚洲精品三区日韩精品在线视频 | 欧美日韩色婷婷| 欧美在线观看视频一区二区| 亚洲欧洲午夜| 久久精品国产96久久久香蕉| 亚洲日本中文| 国自产拍偷拍福利精品免费一| 欧美日韩国产美| 久久躁日日躁aaaaxxxx| 亚洲一区二区三区涩| 欧美大片91| 久久精品国产久精国产一老狼| 99热精品在线观看| 在线日韩成人| 国产综合视频在线观看| 国产精品r级在线| 欧美成人按摩| 久久久久五月天| 亚洲综合好骚| 亚洲免费观看高清完整版在线观看熊| 久久综合色天天久久综合图片| 一区二区欧美精品| 亚洲肉体裸体xxxx137| 狠狠色丁香久久婷婷综合丁香| 国产精品久久97| 欧美午夜视频网站|