glut下載下傳位址:
<a target="_blank" href="http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip">http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip</a>
1. 把解壓得到的glut.h放到"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\gl"(與具體安裝位置有關,應該是 安裝目錄\microsoft sdks\windows\v7.0A\include\gl)
2. 把解壓得到的glut.lib和glut32.lib放到"“Programfiles(x86)\Microsoft Visual studio 10.0\VC\lib" 中(與具體安裝位置有關,同上)
3. 把解壓得到的glut.dll放到"C:\Windows\System32"
4. 把glut32.dll放到“Programfiles(x86)\Microsoft Visual studio 10.0\VC\bin”下(注意這個,網上有人說放到system32裡,但是我試過,會報錯)(與具體安裝位置有關,同上)
5. 打開vs2010,随便打開或建立一個項目。 選擇 project->project property-> Configuration Properties->Linker->Input->Additional Dependencies 在其中添加opengl32.lib glu32.lib glut32.lib
首先,需要包含頭檔案#include <GL/glut.h>,這是GLUT的頭檔案。
本來OpenGL程式一般還要包含<GL/gl.h>和<GL/glu.h>,但GLUT的頭檔案中已經自動将這兩個檔案包含了,不必再次包含。
然後看main函數。
int main(int argc, char *argv[]),這個是帶指令行參數的main函數,各位應該見過吧?沒見過的同志們請多翻翻書,等弄明白了再往下看。
注意main函數中的各語句,除了最後的return之外,其餘全部以glut開頭。這種以glut開頭的函數都是GLUT工具包所提供的函數,下面對用到的幾個函數進行介紹。
1、glutInit,對GLUT進行初始化,這個函數必須在其它的GLUT使用之前調用一次。其格式比較死闆,一般照抄這句glutInit(&argc, argv)就可以了。
2、 glutInitDisplayMode,設定顯示方式,其中GLUT_RGB表示使用RGB顔色,與之對應的還有GLUT_INDEX(表示使用索引顔色)。GLUT_SINGLE表示使用單緩沖,與之對應的還有GLUT_DOUBLE(使用雙緩沖)。更多資訊,請自己Google。當然以後的教程也會有一些講解。
3、glutInitWindowPosition,這個簡單,設定視窗在螢幕中的位置。
4、glutInitWindowSize,這個也簡單,設定視窗的大小。
5、glutCreateWindow,根據前面設定的資訊建立視窗。參數将被作為視窗的标題。注意:視窗被建立後,并不立即顯示到螢幕上。需要調用glutMainLoop才能看到視窗。
6、glutDisplayFunc,設定一個函數,當需要進行畫圖時,這個函數就會被調用。(這個說法不夠準确,但準确的說法可能初學者不太好了解,暫時這樣說吧)。
7、glutMainLoop,進行一個消息循環。(這個可能初學者也不太明白,現在隻需要知道這個函數可以顯示視窗,并且等待視窗關閉後才會傳回,這就足夠了。)
在glutDisplayFunc函數中,我們設定了“當需要畫圖時,請調用myDisplay函數”。于是myDisplay函數就用來畫圖。觀察myDisplay中的三個函數調用,發現它們都以gl開頭。這種以gl開頭的函數都是OpenGL的标準函數,下面對用到的函數進行介紹。
1、glClear,清除。GL_COLOR_BUFFER_BIT表示清除顔色,glClear函數還可以清除其它的東西,但這裡不作介紹。
2、glRectf,畫一個矩形。四個參數分别表示了位于對角線上的兩個點的橫、縱坐标。
3、glFlush,保證前面的OpenGL指令立即執行(而不是讓它們在緩沖區中等待)。其作用跟fflush(stdout)類似。
如果這樣還報錯的話應該注意以下幾點:
有時候在建console application 的時候添加的cpp檔案将字尾句改為 .c
有的程式需要glaux工具包,這個下載下傳了,可以按上述步驟添加(操作基本相同)
主要整合了下面兩個文章:
<a target="_blank" href="http://www.cnblogs.com/moiyer/archive/2011/11/06/2316156.html">http://www.cnblogs.com/moiyer/archive/2011/11/06/2316156.html</a>
<a target="_blank" href="http://lesmatines.blog.163.com/blog/static/17396142013113111934550/">http://lesmatines.blog.163.com/blog/static/17396142013113111934550/</a>