windows從零搭建OpenGL freeglut環境
1.首先先找到自己系統裡OpenGL相關.h .lib .dll的位置
一般系統裡已自帶,只要去找到就好,我的位置:
gl.h C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl
OpenGL32.Lib GlU32.Lib C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
opengl32.dll glu32.dll C:\Windows\SysWOW64
2.下載freeglut
freeglut下載地址 http://freeglut.sourceforge.net/index.php#download
下載之後解壓,開啟檢視兩個README
.cmake講如何用CMake生成sln
.win32講編譯sln產生的lib, dll放到哪裡
3.用CMake編譯生成freeglut.sln
開啟CMake,沒有的去這裡下載並安裝https://cmake.org/download/
選好目錄,點Configure選好需要的編譯器,完成後點Generate
3.編譯freeglut.sln
在輸出檔案中找到freeglut.sln,用vs08開啟,選好Debug還是Release。編譯ALL_BUILD。
這裡注意兩點:
a.需要保證gl.h OpenGL32.Lib GlU32.Lib opengl32.dll glu32.dll所在目錄已被VS包括,沒有的話需要手動加入,分別配置好庫檔案
可執行檔案,包含檔案目錄:
b.如果編譯過程中出現Microsoft Incremental Linker已停止工作的提示,找到具體的單個專案,點右鍵進屬性,將啟用增量連結設定為否後,再重新生成。
4. 放置編譯好的lib, dll
根據opengl 相關位置
gl.h C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl
OpenGL32.Lib GlU32.Lib C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
opengl32.dll glu32.dll C:\Windows\SysWOW64
放置freeglut檔案位置:
將freeglut-3.0.0\include\GL下4個.h放到 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\gl
freeglut.lib freeglut_static.lib 放到C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
freeglut.dll 放到 C:\Windows\SysWOW64
5.驗證freeglut安裝成功
開啟VS,新建專案,配置專案屬性,附加依賴項opengl32.lib freeglut.lib
貼上一下程式碼:
#include <windows.h>
#include <gl/freeglut.h>
void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0,0,0);
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;
}
按F5執行,會看一個紅色正方形,說明freeglut配置成功!
這裡在提供一個有用的測試例子,可以測試顯示卡資訊,當前顯示卡支援的OpenGL版本:
#include<windows.h>
#include <stdio.h>
#include <GL/freeglut.h>
int main(int argc, char** argv)
{
glutInit(&argc,argv);
//顯示模式初始化
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
//定義視窗大小
glutInitWindowSize(300,300);
//定義視窗位置
glutInitWindowPosition(100,100);
//建立視窗
glutCreateWindow("OpenGL Version");
const GLubyte* name = glGetString(GL_VENDOR); //返回負責當前OpenGL實現廠商的名字
const GLubyte* biaoshifu = glGetString(GL_RENDERER); //返回一個渲染器識別符號,通常是個硬體平臺
const GLubyte* OpenGLVersion =glGetString(GL_VERSION); //返回當前OpenGL實現的版本號
const GLubyte* gluVersion= gluGetString(GLU_VERSION); //返回當前GLU工具庫版本
printf("OpenGL實現廠商的名字:%s\n", name);
printf("渲染器識別符號:%s\n", biaoshifu);
printf("OOpenGL實現的版本號:%s\n",OpenGLVersion );
printf("OGLU工具庫版本:%s\n", gluVersion);
system("pause");
return 0;
}