C++ opengl 启动光照
生活随笔
收集整理的這篇文章主要介紹了
C++ opengl 启动光照
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
開啟光照:物體的著色算法不單單依賴于頂點的顏色,引用內置的光照算法
glEnable(GL_LIGHTING):這個僅僅是開啟顏色計算的算法,
變黑的原因:
1.無光源;
2.無法線。
?
原始偽代碼如下:
void Init() {//設置當前矩陣glMatrixMode(GL_PROJECTION); //設置為投影矩陣(對矩陣造成影響的代碼,都會影響當前矩陣)//第一個參數是垂直方面的視角,第二個是寬和高的比,第三個是最近可以看到的距離,第四個是最遠距離gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);glMatrixMode(GL_MODELVIEW);//把當前矩陣切換為模型視圖矩陣glLoadIdentity(); //加載一個單位矩陣 }void Draw() {glClearColor(30.0f / 255.0f, 30.0f / 255.0f, 30.0f / 255.0f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_QUADS);glColor4ub(255, 255, 255, 255);glVertex3f(-0.5f, -0.2f, -0.5f);glVertex3f(0.5f, -0.2f, -0.5f);glVertex3f(0.5f, -0.2f, -1.0f);glVertex3f(-0.5f, -0.2f, -1.0f);glEnd(); }程序運行截圖如下:
?
當glEnable(GL_LIGHTING)啟動這個后就變黑了
偽代碼如下:
void Init() {//設置當前矩陣glMatrixMode(GL_PROJECTION); //設置為投影矩陣(對矩陣造成影響的代碼,都會影響當前矩陣)//第一個參數是垂直方面的視角,第二個是寬和高的比,第三個是最近可以看到的距離,第四個是最遠距離gluPerspective(50.0f, 800.0f / 600.0f, 0.1f, 1000.0f);glMatrixMode(GL_MODELVIEW);//把當前矩陣切換為模型視圖矩陣glLoadIdentity(); //加載一個單位矩陣 }void Draw() {glClearColor(30.0f / 255.0f, 30.0f / 255.0f, 30.0f / 255.0f, 1.0f);glClear(GL_COLOR_BUFFER_BIT);glEnable(GL_LIGHTING);glBegin(GL_QUADS);glColor4ub(255, 255, 255, 255);glVertex3f(-0.5f, -0.2f, -0.5f);glVertex3f(0.5f, -0.2f, -0.5f);glVertex3f(0.5f, -0.2f, -1.0f);glVertex3f(-0.5f, -0.2f, -1.0f);glEnd(); }運行截圖如下:
總結
以上是生活随笔為你收集整理的C++ opengl 启动光照的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt工作笔记-视图(QGraphicsV
- 下一篇: C++ STL string的属性