記錄一次安裝OpenGL的漫長過程
嘗試codeblock和Dev-C++
這學期新開了一門計算機圖形圖像的課,裏面涉及到openGL,中午跑到圖書館開始倒騰OpenGL。
因為電腦裏本來有codeblock,於是就想不用教材裏面所說的DevC++集成了,自己用codebook
集成,可是這一搞就是一下午,沒想到這個這麽麻煩,復制dll,復制lib,復制.h,之後還是各種
稀奇古怪的報錯,於是我幹脆換成了教材上所說的Dev-c++,可是我們這本教材,不是我說,寫
的真的跟**一樣,後來一看主編就是我的任課老師,哎難怪,用DevC++配置有一個比較坑的地方
就是使用頭文件的時候會識別不到路徑,我至今沒找到bug,索性放棄改用VS2017。
牛逼的NuGet包管理器
什麽時NuGet包管理器
我個人覺得它的作用跟Maven類似,可以管理依賴,就是你不用去管什麽ddl,32位64位這些,它
都幫你弄好,這是在網上看到的描述:
用visual studio開發的童鞋們應該都有這樣的感受,經常在copy別人的項目後,出現找不到xxx.h,
找不到xxx.lib,找不到balabala。甚至還有“模塊計算機類型“x86”與目標計算機類型“x64”沖突”,“模
塊計算機類型“x64”與目標計算機類型“x86”沖突”,各種Link錯誤等等令人煩躁的提示!
很多時候都是工程中使用了第三方庫,而工程又沒有能夠自適應的配置文件能幫我們找到這些
-> 常規 -> 附加庫目錄 添加各種lib的路徑,然後還需要在鏈接器 -> 輸入 -> 附加依賴項填寫工程中
使用的lib名稱。這已經足夠煩人了,何況lib還要區分x86/x64,debug/release,vc平臺(vc90,
vc100 and etc.),排列組合大家都學過吧,這得配置多少次大家自己算吧。稍有不慎就會出錯,
如果是一個陌生的項目更大大增加出錯可能,如果你忘記添加相應的lib而導致無法解析的外部符號,
而恰恰你對這個外部符號很陌生並不知道它在哪個lib裏,這就尷尬了。
[http://blog.csdn.net/junparadox/article/details/51086374]
VS2017安裝OpenGL
首先還是需要下GLUT,地址:[https://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip]
然後把glut.h放到...\VC\Tools\MSVC\14.10.25017\include\gl下(沒有include和gl文件夾就新建一個)
把glut.lib,glut32.lib放到...\VC\Tools\MSVC\14.10.25017\lib\x86下
把glut.dll,glut32.dll放到C:\Windows\SysWOW64下(我的系統是64位的,如果是32位的系統,請放到
C:\Windows\System32下),然後新建一個空的控制臺項目,點擊上方項目選擇管理NuGet程序包,
然後搜索nupengl,會出現兩個選項,兩個全部安裝,安裝完成之後就可以測試了。
小插曲,編譯的時候顯示“未將對象引用設置到對象的實例”
這種情況最好打開VS installer修復,等待就好了。修復好就可以了
第一個OpenGL程序
#define GLUT_DISABLE_ATEXIT_HACK
#include <windows.h>
#include <GL/glut.h>
const int A = 500; /* length of a side of the monitor window */
const float B = 500; /* length of a side of the clipping rectangle */
const float C = 200; /* length of a side of the square the program draws */
void myinit(void)
{
glClearColor(0.7, 0.7, 0.7, 0.0); /* gray background */
glMatrixMode(GL_PROJECTION); /* In World coordinates: */
glLoadIdentity(); /* position the "clipping rectangle" */
gluOrtho2D( -B/2, B/2, -B/2, B/2);/* at -B/2, its right edge at +B/2, its bottom */
glMatrixMode(GL_MODELVIEW); /* edge at -B/2 and its top edge at +B/2 */
}
void display( void )
{
glClear(GL_COLOR_BUFFER_BIT); /* clear the window */
glMatrixMode(GL_MODELVIEW); /* The following coordinates are expressed */
glLoadIdentity(); /* in terms of World coordinates */
glBegin(GL_POLYGON) ; /* draw a filled polygon */
glColor3f ( 1.0, 0.3, 0.2); /* draw in light red */
glVertex2f( -C/2, -C/2 ); /* (x,y) */
glVertex2f( C/2, -C/2 ); /* (x,y) */
glVertex2f( C/2, C/2 ); /* (x,y) */
glVertex2f( -C/2, C/2 ); /* (x,y) */
glEnd();
glFlush(); /* send all commands */
}
int main(int argc, char** argv)
{
glutInit(&argc,argv);
glutInitWindowSize( A, A ); /* A x A pixel screen window */
glutInitDisplayMode( GLUT_RGB | GLUT_SINGLE);
glutCreateWindow("My Rectangle"); /* window title */
glutDisplayFunc(display); /* tell OpenGL main loop what */
myinit(); /* set attributes */
glutMainLoop(); /* pass control to the main loop */
return 0;
}
出現紅色矩形!ok,Markdown怎麽插圖片.....
記錄一次安裝OpenGL的漫長過程