記錄一次安裝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錯誤等等令人煩躁的提示!
  很多時候都是工程中使用了第三方庫,而工程又沒有能夠自適應的配置文件能幫我們找到這些
第三方庫造成的,這時候需要程序員在C/C++ ->常規->附加包含目錄添加各種頭文件路徑,鏈接器
-> 常規 -> 附加庫目錄 添加各種lib的路徑,然後還需要在鏈接器 -> 輸入 -> 附加依賴項填寫工程中
使用的lib名稱。這已經足夠煩人了,何況lib還要區分x86/x64,debug/release,vc平臺(vc90,
vc100 and etc.),排列組合大家都學過吧,這得配置多少次大家自己算吧。稍有不慎就會出錯,
如果是一個陌生的項目更大大增加出錯可能,如果你忘記添加相應的lib而導致無法解析的外部符號,
而恰恰你對這個外部符號很陌生並不知道它在哪個lib裏,這就尷尬了。
  然而突然有一天,微軟說我們做了個NuGet把Package 從工程中分離,以後它幫你管理Package 。
[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怎麼插圖片.....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章