1. 程式人生 > >windows從零搭建OpenGL freeglut環境

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