1. 程式人生 > >OpenGL初學:安裝配置與第一個程序

OpenGL初學:安裝配置與第一個程序

ssi -m sphere 選擇 system32 fonts imp b2c 矩形

計算機圖形學要用到OpenGL,我把我安裝的過程和當中遇到的一些問題記錄下。希望對OpenGL的剛開始學習的人有幫助^ ^


OpenGL簡單介紹:

OpenGL? 是行業領域中最為廣泛接納的 2D/3D 圖形 API, 其自誕生至今已催生了各種計算機平臺及設備上的數千優秀應用程序。

OpenGL? 是獨立於視窗操作系統或其他操作系統的。亦是網絡透明的。

在包括CAD[2] 、內容創作、能源、娛樂、遊戲開發、制造業、制藥業及虛擬現實等行業領域中,OpenGL? 幫助程序猿實如今 PC、工作站、超級計算機等硬件設備上的高性能、極具沖擊力的高視覺表現力圖形處理軟件的開發。(摘自百度百科)


配置教程:

要使用OpenGL,必須有配套的.dll,.lib,.h文件。能夠在這裏下載。

下載好後例如以下圖所看到的

技術分享

1、復制.dll文件(如glu.dll等文件)到系統盤c:\windows\system32中。在64位系統中要拷貝到C:\Windows\SysWOW64這個目錄。


2、復制.h文件(如gl.h 等文件)到Visual c++ 的安裝文件夾下。
以我的為例E:\vs2012\VC\include\GL下,一般都會有GL目錄的,沒有的話新建一個即可了。



3、復制.lib文件(如glaux.lib等) 到你的編譯器所在文件夾的lib文件夾。以我的為例E:\vs2012\VC\lib。


註意:假設上面的這些目錄裏本來就有這些文件,請看一下與上面提供的文件是不是一個版本號的,即改動日期、文件大小等是否一樣,假設不一樣最好用上面提供的覆蓋掉,全部的.lib,.h,.dll文件要是同一個版本號,不然會出現故障,例如以下圖,就是我的glut32.dll和glut.h不是一個版本號造成的。

技術分享


第一個OpenGL程序

做完上面的工作。就基本配置好了,以下讓我們來寫第一個opengl程序,來檢驗一下

打開vs,選擇新建project。新建一個win32控制臺應用程序(Win32 Console Application

技術分享

選擇“空項目”

技術分享

加入新建項。我這裏叫OpenGL.c,註意,是.c為擴展名的C語言程序。

技術分享

以下就是寫代碼啦,這裏提供一個測試程序

#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;
}

該程序的作用是在一個黑色的窗體中央畫一個白色的矩形。例如以下圖

技術分享

假設和上圖一樣,就說明配置好了,以下就是自己敲代碼了。


出錯處理

1)

error LNK2019: unresolved external symbol __imp__glFlush@ 這類的錯誤



1>PT.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函數 _main 中被引用
1>PT.obj : error LNK2019: 無法解析的外部符號 [email protected] _main 中被引用
1>PT.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函數 _main 中被引用
1>PT.obj : error LNK2019: 無法解析的外部符號 [email protected],該符號在函數 _main 中被引用


原因是沒有在附加依賴項中加入如上lib 文件

解決方法:項目——項目屬性——配置屬性——鏈接器——輸入——附加依賴項,加入

glut32.lib Opengl32.lib Glu32.lib glaux.lib


2)

error C2664: “auxInitWindowW”: 不能將參數 1 從“const char [7]”轉換為“LPCWSTR”
與指向的類型無關。轉換要求 reinterpret_cast、C 樣式轉換或函數樣式轉換


錯誤及解決方式:
not passing in a Unicode string - put an "L" before the string literal: L"XXXXX" or use the TEXT("XXXXX") or _T("XXXXX") macros...


最後

推薦一個非常好的OpenGL的學習站點http://www.yakergong.net/nehe/


END

OpenGL初學:安裝配置與第一個程序