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

  C++博客 :: 首頁 :: 新隨筆 ::  ::  :: 管理

OpenGL入門學習(一)(轉)

Posted on 2011-04-13 20:40 Kevin_Zhang 閱讀(239) 評論(0)  編輯 收藏 引用 所屬分類: 圖形學
OpenGL入門學習(一)(轉)
說起編程作圖,大概還有很多人想起TC的#include <graphics.h>吧?
但是各位是否想過,那些畫面絢麗的PC游戲是如何編寫出來的?就靠TC那可憐的640*480分辨率、16色來做嗎?顯然是不行的。

本帖的目的是讓大家放棄TC的老舊圖形接口,讓大家接觸一些新事物。

OpenGL作為當前主流的圖形API之一,它在一些場合具有比DirectX更優(yōu)越的特性。
1、與C語言緊密結合
OpenGL命令最初就是用C語言函數(shù)來進行描述的,對于學習過C語言的人來講,OpenGL是容易理解和學習的。如果你曾經(jīng)接觸過TC的graphics.h,你會發(fā)現(xiàn),使用OpenGL作圖甚至比TC更加簡單
2、強大的可移植性
微軟的Direct3D雖然也是十分優(yōu)秀的圖形API,但它只用于Windows系統(tǒng)(現(xiàn)在還要加上一個XBOX游戲機)。而OpenGL不僅用于 Windows,還可以用于Unix/Linux等其它系統(tǒng),它甚至在大型計算機、各種專業(yè)計算機(如:醫(yī)療用顯示設備)上都有應用。并且,OpenGL 的基本命令都做到了硬件無關,甚至是平臺無關。
3、高性能的圖形渲染
OpenGL是一個工業(yè)標準,它的技術緊跟時代,現(xiàn)今各個顯卡廠家無一不對OpenGL提供強力支持,激烈的競爭中使得OpenGL性能一直領先。
總之,OpenGL是一個很NB的圖形軟件接口。至于究竟有多NB,去看看DOOM3和QUAKE4等專業(yè)游戲就知道了。
OpenGL官方網(wǎng)站(英文)
http://www.opengl.org

下面將對Windows下的OpenGL編程進行簡單介紹。


學習OpenGL前的準備工作
第一步,選擇一個編譯環(huán)境
現(xiàn)在Windows系統(tǒng)的主流編譯環(huán)境有Visual Studio,Broland C++ Builder,Dev-C++等,它們都是支持OpenGL的。但這里我們選擇Visual Studio 2005作為學習OpenGL的環(huán)境。
第二步,安裝GLUT工具包
GLUT不是OpenGL所必須的,但它會給我們的學習帶來一定的方便,推薦安裝。
Windows環(huán)境下的GLUT下載地址:(大小約為150k)
http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
無法從以上地址下載的話請使用下面的連接:
http://upload.programfan.com/upfile/200607311626279.zip

Windows環(huán)境下安裝GLUT的步驟:
1、將下載的壓縮包解開,將得到5個文件
2、在“我的電腦”中搜索“gl.h”,并找到其所在文件夾(如果是VisualStudio2005,則應該是其安裝目錄下面的“VC\PlatformSDK\include\gl文件夾”)。把解壓得到的glut.h放到這個文件夾。
3、把解壓得到的glut.lib和glut32.lib放到靜態(tài)函數(shù)庫所在文件夾(如果是VisualStudio2005,則應該是其安裝目錄下面的“VC\lib”文件夾)。
4、把解壓得到的glut.dll和glut32.dll放到操作系統(tǒng)目錄下面的system32文件夾內(nèi)。(典型的位置為:C:\Windows\System32)
第三步,建立一個OpenGL工程
這里以VisualStudio2005為例。
選擇File->New->Project,然后選擇Win32 Console Application,選擇一個名字,然后按OK。
在談出的對話框左邊點Application Settings,找到Empty project并勾上,選擇Finish。
然后向該工程添加一個代碼文件,取名為“OpenGL.c”,注意用.c來作為文件結尾。
搞定了,就跟平時的工程沒什么兩樣的。




第一個OpenGL程序


一個簡單的OpenGL程序如下:(注意,如果需要編譯并運行,需要正確安裝GLUT,安裝方法如上所述)

#include <GL/glut.h>

void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
    glFlush();
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(400, 400);
    glutCreateWindow("第一個OpenGL程序");
    glutDisplayFunc(&myDisplay);
    glutMainLoop();
    return 0;
}

該程序的作用是在一個黑色的窗口中央畫一個白色的矩形。下面對各行語句進行說明。


首先,需要包含頭文件#include <GL/glut.h>,這是GLUT的頭文件。
本來OpenGL程序一般還要包含<GL/gl.h>和<GL/glu.h>,但GLUT的頭文件中已經(jīng)自動將這兩個文件包含了,不必再次包含。

然后看main函數(shù)。
int main(int argc, char *argv[]),這個是帶命令行參數(shù)的main函數(shù),各位應該見過吧?沒見過的同志們請多翻翻書,等弄明白了再往下看。
注意main函數(shù)中的各語句,除了最后的return之外,其余全部以glut開頭。這種以glut開頭的函數(shù)都是GLUT工具包所提供的函數(shù),下面對用到的幾個函數(shù)進行介紹。
1、glutInit,對GLUT進行初始化,這個函數(shù)必須在其它的GLUT使用之前調(diào)用一次。其格式比較死板,一般照抄這句glutInit(&argc, argv)就可以了。
2、 glutInitDisplayMode,設置顯示方式,其中GLUT_RGB表示使用RGB顏色,與之對應的還有GLUT_INDEX(表示使用索引顏色)。GLUT_SINGLE表示使用單緩沖,與之對應的還有GLUT_DOUBLE(使用雙緩沖)。更多信息,請自己Google。當然以后的教程也會有一些講解。
3、glutInitWindowPosition,這個簡單,設置窗口在屏幕中的位置。
4、glutInitWindowSize,這個也簡單,設置窗口的大小。
5、glutCreateWindow,根據(jù)前面設置的信息創(chuàng)建窗口。參數(shù)將被作為窗口的標題。注意:窗口被創(chuàng)建后,并不立即顯示到屏幕上。需要調(diào)用glutMainLoop才能看到窗口。
6、glutDisplayFunc,設置一個函數(shù),當需要進行畫圖時,這個函數(shù)就會被調(diào)用。(這個說法不夠準確,但準確的說法可能初學者不太好理解,暫時這樣說吧)。
7、glutMainLoop,進行一個消息循環(huán)。(這個可能初學者也不太明白,現(xiàn)在只需要知道這個函數(shù)可以顯示窗口,并且等待窗口關閉后才會返回,這就足夠了。)

在glutDisplayFunc函數(shù)中,我們設置了“當需要畫圖時,請調(diào)用myDisplay函數(shù)”。于是myDisplay函數(shù)就用來畫圖。觀察myDisplay中的三個函數(shù)調(diào)用,發(fā)現(xiàn)它們都以gl開頭。這種以gl開頭的函數(shù)都是OpenGL的標準函數(shù),下面對用到的函數(shù)進行介紹。
1、glClear,清除。GL_COLOR_BUFFER_BIT表示清除顏色,glClear函數(shù)還可以清除其它的東西,但這里不作介紹。
2、glRectf,畫一個矩形。四個參數(shù)分別表示了位于對角線上的兩個點的橫、縱坐標。
3、glFlush,保證前面的OpenGL命令立即執(zhí)行(而不是讓它們在緩沖區(qū)中等待)。其作用跟fflush(stdout)類似。



只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美电影免费| 亚洲国内在线| 欧美亚洲在线| 国产精品日本精品| 欧美亚洲自偷自偷| 久久精品国产亚洲a| 在线日韩欧美视频| 欧美激情视频在线播放| 欧美成人乱码一区二区三区| 亚洲精品永久免费精品| 99riav久久精品riav| 欧美日韩一区二区在线观看视频| 亚洲伊人第一页| 亚洲欧美激情四射在线日| 国产综合色产在线精品| 裸体一区二区| 欧美日韩国产综合一区二区| 午夜影视日本亚洲欧洲精品| 欧美在线日韩| 亚洲精品中文字幕女同| 日韩特黄影片| 国产亚洲成精品久久| 美女91精品| 欧美日韩国产美女| 欧美在线一区二区| 蜜臀av性久久久久蜜臀aⅴ| 亚洲色图制服丝袜| 久久精品视频99| 亚洲视频你懂的| 久久精品国产精品亚洲精品| 亚洲美洲欧洲综合国产一区| 亚洲欧美一区二区三区在线 | 亚洲黄色高清| 国产精品人人爽人人做我的可爱| 美女视频黄 久久| 欧美日本一道本| 久久久成人精品| 欧美日韩中国免费专区在线看| 久久视频在线免费观看| 欧美日韩国产色视频| 久久亚洲精选| 国产精品美女一区二区在线观看| 欧美大片在线观看一区| 国产欧美精品在线观看| 亚洲欧洲综合| 亚洲风情亚aⅴ在线发布| 亚洲免费综合| 一卡二卡3卡四卡高清精品视频| 久久久久国产一区二区三区四区| 亚洲一区二区在线免费观看视频| 免费看精品久久片| 久久五月天婷婷| 国产目拍亚洲精品99久久精品| 欧美大成色www永久网站婷| 国产麻豆综合| 一区二区三区四区五区精品视频| 亚洲激情中文1区| 久久精品日韩| 久久综合精品国产一区二区三区| 国产精品久久久久久影院8一贰佰 国产精品久久久久久影视 | 久久精品欧美日韩精品| 先锋资源久久| 国产欧美精品日韩区二区麻豆天美| 亚洲精品中文字幕在线| 日韩视频免费| 欧美激情精品久久久久久免费印度 | 亚洲精品国产精品久久清纯直播| 久久久精品午夜少妇| 久久网站热最新地址| 国产亚洲精品久久飘花| 性色av一区二区三区在线观看| 亚洲免费中文| 国产欧美日韩91| 亚洲欧美日韩在线| 久久国产福利国产秒拍| 国产婷婷精品| 久久精品国产视频| 农村妇女精品| 亚洲精品亚洲人成人网| 欧美福利视频一区| 日韩一区二区精品| 亚洲欧美成人在线| 国产日韩亚洲欧美| 久久久久综合网| 亚洲福利专区| 亚洲午夜精品久久| 国产伦精品一区二区三| 欧美在线视屏| 免费亚洲婷婷| 日韩一级在线| 国产精品青草久久| 久久成人国产精品| 亚洲国产精品嫩草影院| 亚洲午夜激情网页| 国产午夜精品一区二区三区欧美 | 亚洲精品欧美激情| 欧美亚洲一区二区在线观看| 国产亚洲精品福利| 牛牛影视久久网| 一本色道综合亚洲| 久久一区欧美| 一区二区三区久久精品| 国产区日韩欧美| 久热精品视频在线免费观看| 日韩天堂在线观看| 久久噜噜噜精品国产亚洲综合 | 国产精品www色诱视频| 久久成人18免费网站| 亚洲精一区二区三区| 久久riav二区三区| 亚洲电影成人| 国产精品美女久久福利网站| 久久久久在线观看| 亚洲一区一卡| 亚洲激情网址| 久久一日本道色综合久久| 亚洲网在线观看| 在线日韩日本国产亚洲| 国产精品色在线| 欧美日韩国产欧美日美国产精品| 久久精品国产一区二区三| 99国产一区| 亚洲高清在线精品| 久久久亚洲一区| 午夜精品福利在线| 99精品久久久| 亚洲激情二区| 精品99一区二区三区| 国产精品夜夜夜| 欧美视频在线视频| 欧美黄免费看| 巨胸喷奶水www久久久免费动漫| 亚洲一区视频在线| 99re66热这里只有精品4| 欧美成人亚洲成人| 久久亚洲精品网站| 久久成人人人人精品欧| 亚洲永久精品国产| 亚洲网在线观看| 亚洲天堂久久| 一本色道久久综合亚洲精品不| 亚洲欧洲精品成人久久奇米网| 一区二区三区在线视频播放| 国产欧美va欧美不卡在线| 欧美天天在线| 国产精品久久久久久久久免费桃花| 欧美日韩国产高清| 欧美日本一区二区高清播放视频| 美女诱惑一区| 欧美成在线视频| 欧美精品一区二区视频| 欧美激情一区二区三区蜜桃视频 | 亚洲一区3d动漫同人无遮挡| 艳女tv在线观看国产一区| 99av国产精品欲麻豆| 一本一本a久久| 亚洲综合电影一区二区三区| 亚洲一区二区欧美日韩| 亚洲综合首页| 欧美在线播放视频| 快播亚洲色图| 欧美精品一区二区精品网 | 欧美一区二区三区在线播放| 欧美一区成人| 久久亚洲高清| 欧美激情按摩在线| 国产精品国产三级国产普通话三级| 国产精品video| 国产亚洲成精品久久| 亚洲国产99精品国自产| 日韩午夜激情av| 午夜一区二区三视频在线观看| 欧美一区国产在线| 免费在线视频一区| 亚洲国产欧美国产综合一区| 亚洲天堂av在线免费观看| 欧美在线看片| 欧美激情精品| 国产欧美婷婷中文| 亚洲国产精品小视频| 亚洲一区一卡| 久久久久女教师免费一区| 亚洲日本欧美| 亚洲欧美伊人| 欧美激情第10页| 国产欧美精品一区| 亚洲伦理久久| 久久久久久久久久看片| 亚洲欧洲偷拍精品| 欧美一区二区黄| 欧美日韩国产综合网| 极品日韩av| 亚洲综合电影| 亚洲国产天堂久久国产91| 午夜在线不卡| 欧美日一区二区三区在线观看国产免| 激情亚洲成人| 欧美一区日本一区韩国一区| 亚洲人成在线观看| 久久久久久夜|