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

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

nehe opengl 教程的使用的框架是基于win32的編程.雖然教程的作者已經搭好框架了,但是相對于來講win32窗口的編程是比較麻煩的,鑒于此,身為opengl初學者的我,在使用編程的習慣還是傾向于使用簡單的glut實用庫來重寫自己想學的所有lession.為此所有的lession 我將集中于一個大工程里.通過同一個頭文件定義所有的聲明等.
我為什么這么做呢?因為若我想用oop實現它 這將會是將簡單且容易轉換的.

現在將開始我的opengl之旅...基于vs 2008創建一個總體工程框架.

首先  新建 一個vs2008 解決方案 (solution)  命名為 opengl_glut  創建項目名稱定為lesson_1 設置為空白項目


在項目 lesson_1中添加頭文件 openglglut.h 將其保存在 opengl_glut解決方案下的src目錄,這個目錄將保存所有的源代碼,以后所有的lesson的代碼都將存放在該目錄下.


同樣的創建lesson_1.cpp 于是開始我們的代碼編寫之旅.我覺得良好的編程習慣將帶給自己一個很好的工作心情吧.同樣的良好的代碼風格也將給別人更好的心情..

首先實現 openglglut.h: 以后的所有lesson都將包含該頭文件 可能以后的lesson當中將會增加一些函數的聲明等.

/*
** opengl glut框架 定義的頭文件
** 頭文件中聲明了一些主要方法
** 頭文件中實現一些共同使用的方法則使得不再重復使用
*/


/** 定義避免在glut使用atexit*/
#ifndef GLUT_DISABLE_ATEXIT_HACK
#define GLUT_DISABLE_ATEXIT_HACK
#endif

#ifdef WIN32
    #include
<windows.h>
#endif

#ifndef OPENGLGLUT_H
#define OPENGLGLUT_H

#include
<stdio.h>
#include
<stdlib.h>
#include
<gl\glut.h>
/** 初始化一些窗口變量值*/
const int GL_WIN_WIDTH = 640;
const int GL_WIN_HEIGHT = 480;
const int GL_WIN_INITIAL_X = 30;
const int GL_WIN_INITIAL_Y = 30;

/** 設置是否全屏標志*/
bool isFullScreen=false;

/**  glut框架的窗口初始化創建函數**/

void createWindow(char* title,int* argc,char** argv)
{
    glutInitDisplayMode( GLUT_DOUBLE 
| GLUT_DEPTH | GLUT_RGBA | GLUT_MULTISAMPLE );
    glutInitWindowPosition( GL_WIN_INITIAL_X, GL_WIN_INITIAL_Y );
    glutInitWindowSize( GL_WIN_WIDTH, GL_WIN_HEIGHT );
    glutInit(argc, argv);
    glutCreateWindow(title);
}


/** 聲明繪制函數*/
void glutDisplay(void);  /** 該函數由所需要繪制的內容單獨實現**/

/** 聲明窗口調整函數 **/
void glutResize(int width,int height)
{
    glViewport(
00, width, height);/** 設置視口*/
    glMatrixMode(GL_PROJECTION);
/** 設置投影矩陣*/
    glLoadIdentity();  
//設置當前投影矩陣為單位矩陣
    /* modify this line to change perspective values */
    
/*使用透視投影,這其實是定義了一個投影矩陣并右乘當前矩陣得到最終投影矩陣*/
    gluPerspective(
45.0, (float)width/(float)height, 1.0300.0);
    glMatrixMode(GL_MODELVIEW);     
//設置模型視圖矩陣
    glLoadIdentity();               //設置當前矩陣為單位矩陣
}


/** 聲明opengl初始化*/
void InitOpenGL(void)
{
    glShadeModel(GL_SMOOTH);   
//啟用陰影平滑
    glClearColor(0.0,0.0,0.0,0.0); //黑色背景
    glClearDepth(1.0f);       // 設置深度緩存
    glEnable(GL_DEPTH_TEST); // 啟用深度測試
    glDepthFunc(GL_LEQUAL); // 所作深度測試的類型
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //告訴系統 對透視進行修正
}

/** 空閑回調函數聲明*/
void glutIdle(void);

/** glut鼠標控制函數聲明*/
void glutMouse(int button,int state,int x,int y);

/** glut鍵盤控制函數聲明*/
void glutKeyboard(unsigned char key,int x,int y);

/** 聲明glut特殊按鍵 如shit ctrl alt等處理函數*/
void glutSpecial(int value, int x, int y)
{
    
switch (value)
    
{
         
case GLUT_KEY_F1:        // 按F1鍵時切換窗口/全屏模式
            if(isFullScreen)
            
{
                glutReshapeWindow(GL_WIN_WIDTH, GL_WIN_HEIGHT);
                glutPositionWindow(GL_WIN_INITIAL_X, GL_WIN_INITIAL_Y);
                isFullScreen 
= false;
            }

            
else
            
{
                glutFullScreen();
                isFullScreen 
= true;
            }

            
return;
         
default:
             
return;
    }

}


#endif


在創建完我的頭文件之后 我將開始了我的opengl學習過程
 lesson_1:使用glut創建一個簡單窗口,可實現按F1 全屏或窗口顯示
#include "openglglut.h"

/*
** opengl 教程第一課內容
** 創建一個簡單的glut窗口流程
*/

int main(int argc, char** argv)
{
    
/** 初始化窗口 并創建窗口*/

    createWindow(
"opengl lesson_1",&argc,argv);

    
/** 注冊glut的一些函數*/
    glutReshapeFunc(glutResize);     
//窗口調整函數 使得調整后圖形顯示不發生改變
    glutDisplayFunc(glutDisplay);    //重繪函數     使得可以在窗口中繪制圖形
    glutSpecialFunc(glutSpecial);    //特殊按鍵函數 使得實現全屏/窗口切換

    
/** 初始化opengl的一些操作*/
    InitOpenGL();

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


/** 實現頭文件當中定義的繪制函數 **/
void glutDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT 
| GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();                   
//將先初始化單位矩陣
    glutSwapBuffers();                 //強制繪圖命令執行繪制在緩沖區交換出來
}


最終的顯示結果將是一個黑色的窗口:



末尾總結:在這一課當中,我學到如何創建glut窗口 并將它顯示出來
posted on 2009-07-15 09:28 米游 閱讀(778) 評論(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>
            久久久精品免费视频| 性xx色xx综合久久久xx| 国产日韩三区| 99精品国产热久久91蜜凸| 国内综合精品午夜久久资源| 亚洲美女啪啪| 亚洲三级影片| 老司机免费视频久久| 久久久久国产精品麻豆ai换脸| 欧美日韩视频专区在线播放 | 国产精品色婷婷| 亚洲第一伊人| 国内外成人在线视频| 亚洲一区国产精品| 亚洲一区图片| 欧美系列亚洲系列| 亚洲乱码日产精品bd| 亚洲精选视频在线| 欧美91视频| 亚洲国产成人av在线| 亚洲激情一区二区| 免费亚洲电影| 亚洲高清不卡| 亚洲六月丁香色婷婷综合久久| 乱人伦精品视频在线观看| 久久香蕉国产线看观看av| 国产日韩精品在线播放| 亚洲一区二区四区| 午夜在线成人av| 国产精品乱人伦一区二区| 亚洲性视频网站| 午夜精品免费| 国产一区 二区 三区一级| 午夜精品久久久久久久白皮肤| 午夜精品一区二区三区在线播放| 国产精品a级| 亚洲欧美精品suv| 久久都是精品| 在线看欧美日韩| 免费一区二区三区| 日韩系列在线| 欧美一区午夜精品| 韩国精品在线观看| 久久久久这里只有精品| 亚洲国产精品成人精品| 在线综合亚洲欧美在线视频| 国产精品久久777777毛茸茸| 欧美亚洲综合另类| 欧美mv日韩mv亚洲| aa级大片欧美三级| 国产精品欧美久久久久无广告| 欧美一级网站| 亚洲第一综合天堂另类专| 亚洲视频电影在线| 国产欧美一区二区三区沐欲| 久久午夜精品一区二区| 99国产精品久久久久老师| 欧美一级久久久| 亚洲国产精品成人一区二区| 欧美日韩日本国产亚洲在线| 欧美一区二视频| 91久久国产综合久久91精品网站| 亚洲你懂的在线视频| 一区二区三区在线观看国产| 欧美人牲a欧美精品| 小黄鸭精品密入口导航| 亚洲国产mv| 久久九九久精品国产免费直播| 亚洲日本理论电影| 国产亚洲精品综合一区91| 欧美精品www在线观看| 亚洲欧美日韩中文在线制服| 亚洲国产成人tv| 久久青草久久| 亚洲伊人一本大道中文字幕| 亚洲国产高清在线| 国产精品嫩草99a| 免费中文日韩| 久久国产精品一区二区三区| 一本色道久久综合亚洲精品不 | 亚洲精品在线视频观看| 久久久综合视频| 亚洲一区二区三区高清| 影音先锋在线一区| 国产欧美不卡| 欧美日精品一区视频| 免费在线欧美视频| 欧美在线不卡| 亚洲资源在线观看| 一区二区av在线| 亚洲大片免费看| 久久综合久久美利坚合众国| 亚洲欧美日韩国产一区二区三区| 亚洲精品国久久99热| 在线免费观看日本一区| 国产欧美在线播放| 国产精品区一区二区三区| 欧美精品国产| 欧美激情影院| 欧美激情日韩| 欧美精品成人| 欧美激情综合色| 欧美精品大片| 欧美精品在线网站| 欧美激情视频网站| 欧美成人精品高清在线播放| 快播亚洲色图| 麻豆精品传媒视频| 欧美成人精品影院| 欧美日本久久| 欧美性猛交99久久久久99按摩| 欧美日韩国产一区| 欧美国产免费| 国产精品麻豆va在线播放| 欧美成人一区二区| 你懂的一区二区| 欧美超级免费视 在线| 免费成人av资源网| 欧美国产日本| 欧美日韩中文字幕| 国产精品久久久一区二区| 国产精品永久| 国产一区视频在线看| 在线高清一区| 亚洲精品乱码久久久久久日本蜜臀 | 欧美日韩精品一二三区| 欧美日韩一区在线观看视频| 欧美午夜精品久久久久久孕妇| 国产精品久久久久一区二区三区共 | …久久精品99久久香蕉国产| 亚洲成人原创| 在线视频精品一| 亚洲欧美日韩在线综合| 久久久久久亚洲精品杨幂换脸| 美国成人毛片| 亚洲九九爱视频| 亚洲欧美日韩精品一区二区| 久久久久亚洲综合| 欧美日韩免费观看一区二区三区 | 99国产精品久久久久久久成人热| 一区二区黄色| 久久精品国产亚洲精品| 欧美二区在线| 国产精品人成在线观看免费| 狠狠干狠狠久久| 夜夜嗨av一区二区三区四季av| 亚洲愉拍自拍另类高清精品| 久久综合九色综合久99| 亚洲人成网站影音先锋播放| 亚洲一本大道在线| 免费不卡在线观看| 国产精品青草综合久久久久99 | 一区二区成人精品| 久久成人免费| 欧美性猛交视频| 亚洲国产精品久久人人爱蜜臀| 亚洲视频在线播放| 欧美成人中文字幕| 亚洲欧美经典视频| 欧美h视频在线| 国产亚洲精品高潮| 亚洲一区3d动漫同人无遮挡| 欧美1区2区3区| 亚洲欧美激情诱惑| 欧美日韩成人一区二区三区| 黄色成人精品网站| 欧美在线国产精品| 日韩一区二区久久| 免费的成人av| 国产一区二区剧情av在线| 亚洲视频免费看| 亚洲高清免费在线| 久久精品视频一| 国产视频在线观看一区二区三区 | 久久在线视频| 国产午夜精品福利| 午夜精品美女自拍福到在线| 99国产精品久久久久久久成人热 | 99热这里只有精品8| 免费日韩成人| 欧美一区二区啪啪| 国产目拍亚洲精品99久久精品| 在线天堂一区av电影| 亚洲国产日本| 欧美va天堂在线| 亚洲国产另类精品专区| 狂野欧美一区| 久久久久一区二区三区| 激情六月综合| 久久久精品国产免大香伊 | 国产精品二区二区三区| 99精品国产福利在线观看免费| 欧美成年人视频网站| 久久影院午夜论| 亚洲国产精品视频| 欧美激情亚洲自拍| 欧美第十八页| 宅男噜噜噜66一区二区66| 亚洲精品孕妇| 欧美日韩中文另类|