1. 程式人生 > >在vs2005下的第一個OpenGL程式。

在vs2005下的第一個OpenGL程式。

原文http://www.cnblogs.com/songlotus/articles/965368.html



學習OpenGL前的準備工作
第一步,選擇一個編譯環境
選擇Visual Studio 2005作為學習OpenGL的環境。
第二步,配置OpenGL環境
具體做法在前一篇中。建議將相應檔案放到VC的資料夾下,而不是PlatformSDK中。
第三步,安裝GLUT工具包
GLUT不是OpenGL所必須的,但它會給我們的學習帶來一定的方便,推薦安裝。
Windows環境下的GLUT下載地址:(大小約為150k)
http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip

無法從以上地址下載的話請使用下面的連線:
http://upload.programfan.com/upfile/200607311626279.zip

Windows環境下安裝GLUT的步驟:
1、將下載的壓縮包解開,將得到5個檔案
2、在“我的電腦”中搜索“gl.h”,並找到其所在資料夾(如果是VisualStudio2005,則應該是其安裝目錄下面的“VC\PlatformSDK\include\gl資料夾”)。把解壓得到的glut.h放到這個資料夾。
3、把解壓得到的glut.lib和glut32.lib放到靜態函式庫所在資料夾(如果是VisualStudio2005,則應該是其安裝目錄下面的“VC\lib”資料夾)。
4、把解壓得到的glut.dll和glut32.dll放到作業系統目錄下面的system32資料夾內。(典型的位置為:C:\Windows\System32)
第四步,建立一個OpenGL工程

這裡以VisualStudio2005為例。
選擇File->New->Project,然後選擇Win32 Console Application,選擇一個名字,然後按OK。
在談出的對話方塊左邊點Application Settings,找到Empty project並勾上,選擇Finish。
然後向該工程新增一個程式碼檔案,取名為“OpenGL.c”, 注意用.c來作為檔案結尾
一個簡單的OpenGL程式如下:
#include <GL/glut.h>  //需要包含標頭檔案#include <GL/glut.h>,這是GLUT的標頭檔案。本來OpenGL程式一般還要包含<GL/gl.h>和<GL/glu.h>,但GLUT的標頭檔案中已經自動將這兩個檔案包含了,不必再次包含。


void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0f,1.0f,0.0f);
    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;
}

編譯執行就可以了。
轉載:
引用: 怎麼把那個DOS視窗去掉啊?

答:首先,那個視窗不叫DOS視窗,而叫“命令列視窗”。
    如果使用GLUT的話,最好還是保留那個視窗,因為如果在使用GLUT過程中有任何錯誤或者警告,都會直接顯示到命令列視窗——如果你繪製圖形失敗,多半可以根據命令列視窗中的資訊找到一點原因。這樣會給我們帶來方便。
    另外,使用GLUT可以做到平臺無關。也就是說,雖然我們現在講的是Windows下面的程式設計,但這些程式碼拿到Linux,Apple Macintosh,IBM OS/2或者其它的視窗系統,都可以被正確的編譯並執行(需要下載並安裝相應版本的GLUT),不需要修改程式碼。如果需要去掉“命令列視窗”
    如果你真的感到“命令列視窗”很不爽,可以在建立工程時選擇“Win32 Application”,而不是“Win32 Console Application”。(對於已經建好的工程,需要在Projcet->Properties->Configuration Properties->Linker->System那個窗口裡面,把SubSystem選項由Console改為Windows),並在程式開始時使用WinMain作為程式入口,而不是main。然後,你還需要一些Win32的程式設計基礎。如果你不介意的話,把下面的程式碼抄下來也可以。

#include <windows.h>
#include <GL/glut.h>

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

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev,
                   PSTR CmdLine, int iCmdShow)
{
    int argc = 1;
    char *argv[] = {"OpenGL Application"};
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(400, 400);
    glutCreateWindow("第一個OpenGL程式");
    glutDisplayFunc(&myDisplay);
    glutMainLoop();
    return 0;
}

注意這個程式和前面的示例所不同的地方:
1、多加了標頭檔案:#include <windows.h>。
2、main變成了WinMain,並且函式的引數有所不同。
3、在WinMain中,定義了假的argc和argv,方便使用glutInit函式。雖然看起來有些彆扭,但總算是成功的將GLUT給初始化好了。

建議:GLUT在學習的開始時期會給查錯帶來方便,因此使用GLUT,並且開啟命令列是比較好的做法。當我們不再需要GLUT,打算一切自己干時,再來考慮如何寫一個不帶命令列的程式,這樣可能會比較合適。