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

隨筆-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>
            亚洲国内精品在线| 亚洲精品中文字幕在线| 国内精品免费午夜毛片| 亚洲欧美视频一区| 欧美在线视频网站| 国语自产在线不卡| 亚洲第一福利视频| 免费成人av资源网| 亚洲欧美日韩成人| 欧美在线观看视频在线 | 亚洲第一免费播放区| 欧美不卡三区| 欧美日韩一区国产| 久久久噜噜噜久久狠狠50岁| 免费成人高清在线视频| 亚洲欧美国产高清va在线播| 免费在线国产精品| 欧美一区二区三区四区在线观看地址| 欧美在线影院| 欧美一区二区三区四区夜夜大片| 另类酷文…触手系列精品集v1小说| 亚洲一区二区三区免费在线观看| 久久大逼视频| 亚洲在线视频观看| 欧美日韩在线三级| 欧美国产亚洲另类动漫| 一本色道久久综合亚洲精品不卡| 伊大人香蕉综合8在线视| 亚洲一区二区三区精品在线| 亚洲免费精品| 欧美日韩综合另类| 亚洲精品视频一区二区三区| 亚洲美女色禁图| 欧美激情亚洲自拍| 亚洲精品一区二区三区樱花| 亚洲国产一区在线| 欧美理论在线| 99在线精品视频| 久久av在线看| 在线观看日韩av| 欧美激情网友自拍| 在线亚洲欧美专区二区| 久久一二三四| 国产中文一区二区| 久久gogo国模裸体人体| 美女图片一区二区| 亚洲另类在线视频| 国产精品美女久久久免费| 亚洲私拍自拍| 欧美成人资源网| 亚洲制服av| 亚洲国产视频直播| 国产精品久久久久一区二区三区| 欧美在线视频播放| 亚洲人成久久| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲精品一区在线观看| 欧美日韩在线视频一区| 女仆av观看一区| 亚洲一区二区三区高清不卡| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲综合二区| 一本色道久久88精品综合| 激情成人中文字幕| 国产一区清纯| 亚洲理论在线观看| 免费在线一区二区| 久久精品在线| 性欧美激情精品| 欧美一级淫片播放口| 一区二区三区精密机械公司| 亚洲高清色综合| 91久久久久久| 91久久精品国产91久久性色| 亚洲国产欧美不卡在线观看| 亚洲高清一区二区三区| 亚洲国产精品热久久| 亚洲三级视频| 亚洲一区二区三区免费视频| 亚洲欧美日韩成人| 久久精品免视看| 欧美精品少妇一区二区三区| 久久尤物电影视频在线观看| 欧美少妇一区| 国产农村妇女毛片精品久久麻豆 | 久久久免费精品视频| 欧美一区影院| 欧美中文字幕不卡| 性伦欧美刺激片在线观看| 亚洲欧美综合国产精品一区| 欧美专区在线观看一区| 久久中文欧美| 美女主播一区| 欧美人与禽猛交乱配| 国产精品国产a级| 国产精品久久久一区二区三区| 一区二区三区在线视频观看| 亚洲一区二区三区乱码aⅴ| 欧美成人一区二区三区片免费| 亚洲欧美大片| 久久伊人精品天天| 亚洲一区二区少妇| 亚洲国产日韩欧美在线动漫| 亚洲欧美综合精品久久成人| 国产精品狠色婷| 亚洲免费小视频| 午夜精品视频在线观看一区二区| 欧美精品在线免费播放| 亚洲国产精品精华液2区45| 亚洲女爱视频在线| 亚洲精品欧美精品| 久久色在线播放| 激情五月***国产精品| 欧美v亚洲v综合ⅴ国产v| 毛片一区二区三区| 亚洲国产精品www| 欧美在线免费观看亚洲| 欧美怡红院视频一区二区三区| 国产一区二区日韩| 蜜桃av一区二区在线观看| 久久中文字幕一区二区三区| 国产一区二区丝袜高跟鞋图片 | 亚洲三级色网| 欧美国产精品v| 欧美女主播在线| 欧美伊久线香蕉线新在线| 欧美一区国产二区| 亚洲另类自拍| 久久国产视频网站| 一区二区三区四区五区在线 | 欧美日韩一区二区三区在线观看免| 先锋影音网一区二区| 99精品视频免费在线观看| 国产精品卡一卡二| 久久久噜噜噜久久| 欧美激情精品久久久久| 午夜精品久久久久久久久久久| 日韩视频不卡| 欧美资源在线观看| 一二三区精品| 久久一区免费| 久久久精品动漫| 欧美日韩成人在线播放| 久久蜜桃资源一区二区老牛| 欧美日韩一区二区在线播放| 欧美日韩一级视频| 快she精品国产999| 国产裸体写真av一区二区| 亚洲美女在线看| 亚洲六月丁香色婷婷综合久久| 欧美一区日本一区韩国一区| 亚洲欧美中文另类| 欧美日韩精品欧美日韩精品一| 欧美.com| 99综合视频| 欧美日韩精品免费| 亚洲黄网站在线观看| 免费成人毛片| 亚洲在线视频网站| 国产精品久久综合| 中文精品视频一区二区在线观看| 亚洲高清三级视频| 欧美激情中文字幕乱码免费| 亚洲激情婷婷| 亚洲一级在线| 亚洲第一页在线| 中文在线一区| 国产欧美精品在线播放| 久久国产一区二区| 欧美国产精品中文字幕| 亚洲色图制服丝袜| 国产视频在线观看一区二区三区 | 亚洲精品美女在线观看播放| 欧美国产91| 欧美亚洲免费| 亚洲国产小视频在线观看| 中文无字幕一区二区三区| 国产欧美在线播放| 欧美理论电影在线播放| 久久精品日韩一区二区三区| 91久久久久久国产精品| 久久超碰97中文字幕| 日韩视频在线观看免费| 国产欧美日韩视频一区二区三区| 久久久www成人免费无遮挡大片| 亚洲人久久久| 亚洲电影视频在线| 久久久久久久成人| 亚洲欧美一区二区三区极速播放 | 午夜日韩av| 一本大道久久a久久精品综合| 欧美www视频| 亚洲国产日韩欧美在线动漫| 蜜桃久久av一区| 老司机午夜精品| 欧美一区二区在线免费播放| 亚洲国产视频直播| 久久久亚洲影院你懂的| 亚洲一区在线观看免费观看电影高清 | 久久岛国电影|