日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 充電吧
[導讀]在上節(jié)課的內容上作些擴展,我們現(xiàn)在開始生成真正的3D對象,而不是象前兩節(jié)課中那樣3D世界中的2D對象。我們給三角形增加一個左側面,一個右側面,一個后側面來生成一個金字塔(四棱錐)。給正方形增加左、右、

在上節(jié)課的內容上作些擴展,我們現(xiàn)在開始生成真正的3D對象,而不是象前兩節(jié)課中那樣3D世界中的2D對象。我們給三角形增加一個左側面,一個右側面,一個后側面來生成一個金字塔(四棱錐)。給正方形增加左、右、上、下及背面生成一個立方體。?

我們混合金字塔上的顏色,創(chuàng)建一個平滑著色的對象。給立方體的每一面則來個不同的顏色。

只需要在上節(jié)課的基礎上改動render函數

void Lesson4::render()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

    glViewport(0,0,(GLint)width(),(GLint)height()); // 重置當前視口
    glMatrixMode(GL_PROJECTION);                    // 選擇投影矩陣
    glLoadIdentity();                               // 重置投影矩陣為單位矩陣
    // glu庫函數Qt不支持,但是glu庫函數是對gl庫函數的封裝,方便使用。因此我們可以自己
    // 寫一個類似gluPerspective的函數myPerspective,用于設置透視。
    //gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
    myPerspective(45.0,(GLfloat)width()/(GLfloat)height(),0.1,100.0);

    glMatrixMode(GL_MODELVIEW);// 選擇模型視圖矩陣
    glLoadIdentity();          // 重置模型視圖矩陣為單位矩陣

    glTranslatef(-1.5f,0.0f,-6.0f); // 左移1.5單位,并移入屏幕6.0
    glRotatef(rtri,0.0f,1.0f,0.0f);	// 繞Y軸旋轉金字塔

    // 注意所有的面-三角形都是逆時針次序繪制的。這點十分重要,在以后的課程中我會作出解釋。
    // 現(xiàn)在,您只需明白要么都逆時針,要么都順時針,但永遠不要將兩種次序混在一起,
    // 除非您有足夠的理由必須這么做。
    glBegin(GL_TRIANGLES);			    // 繪制金字塔
    glColor3f(1.0f,0.0f,0.0f);			// 紅色
    glVertex3f( 0.0f, 1.0f, 0.0f);		// 三角形的上頂點 (前側面)
    glColor3f(0.0f,1.0f,0.0f);			// 綠色
    glVertex3f(-1.0f,-1.0f, 1.0f);		// 三角形的左下頂點 (前側面)
    glColor3f(0.0f,0.0f,1.0f);			// 藍色
    glVertex3f( 1.0f,-1.0f, 1.0f);		// 三角形的右下頂點 (前側面)
    glColor3f(1.0f,0.0f,0.0f);			// 紅色
    glVertex3f( 0.0f, 1.0f, 0.0f);		// 三角形的上頂點 (右側面)
    glColor3f(0.0f,0.0f,1.0f);			// 藍色
    glVertex3f( 1.0f,-1.0f, 1.0f);		// 三角形的左下頂點 (右側面)
    glColor3f(0.0f,1.0f,0.0f);			// 綠色
    glVertex3f( 1.0f,-1.0f, -1.0f);		// 三角形的右下頂點 (右側面)
    glColor3f(1.0f,0.0f,0.0f);			// 紅色
    glVertex3f( 0.0f, 1.0f, 0.0f);		// 三角形的上頂點 (后側面)
    glColor3f(0.0f,1.0f,0.0f);			// 綠色
    glVertex3f( 1.0f,-1.0f, -1.0f);		// 三角形的左下頂點 (后側面)
    glColor3f(0.0f,0.0f,1.0f);			// 藍色
    glVertex3f(-1.0f,-1.0f, -1.0f);		// 三角形的右下頂點 (后側面)
    glColor3f(1.0f,0.0f,0.0f);			// 紅色
    glVertex3f( 0.0f, 1.0f, 0.0f);		// 三角形的上頂點 (左側面)
    glColor3f(0.0f,0.0f,1.0f);			// 藍色
    glVertex3f(-1.0f,-1.0f,-1.0f);		// 三角形的左下頂點 (左側面)
    glColor3f(0.0f,1.0f,0.0f);			// 綠色
    glVertex3f(-1.0f,-1.0f, 1.0f);		// 三角形的右下頂點 (左側面)
    glEnd();                            // 金字塔繪制結束

    glLoadIdentity();
    glTranslatef(1.5f,0.0f,-6.0f);  // 右移1.5單位,并移入屏幕6.0
    glRotatef(rquad,1.0f,1.0f,1.0f);// 在XYZ軸上旋轉立方體

    glBegin(GL_QUADS);				    // 繪制立方體
    glColor3f(0.0f,1.0f,0.0f);			// 顏色改為藍色
    glVertex3f( 1.0f, 1.0f,-1.0f);		// 四邊形的右上頂點 (頂面)
    glVertex3f(-1.0f, 1.0f,-1.0f);	    // 四邊形的左上頂點 (頂面)
    glVertex3f(-1.0f, 1.0f, 1.0f);		// 四邊形的左下頂點 (頂面)
    glVertex3f( 1.0f, 1.0f, 1.0f);		// 四邊形的右下頂點 (頂面)
    glColor3f(1.0f,0.5f,0.0f);			// 顏色改成橙色
    glVertex3f( 1.0f,-1.0f, 1.0f);		// 四邊形的右上頂點(底面)
    glVertex3f(-1.0f,-1.0f, 1.0f);		// 四邊形的左上頂點(底面)
    glVertex3f(-1.0f,-1.0f,-1.0f);		// 四邊形的左下頂點(底面)
    glVertex3f( 1.0f,-1.0f,-1.0f);		// 四邊形的右下頂點(底面)
    glColor3f(1.0f,0.0f,0.0f);			// 顏色改成紅色
    glVertex3f( 1.0f, 1.0f, 1.0f);		// 四邊形的右上頂點(前面)
    glVertex3f(-1.0f, 1.0f, 1.0f);		// 四邊形的左上頂點(前面)
    glVertex3f(-1.0f,-1.0f, 1.0f);		// 四邊形的左下頂點(前面)
    glVertex3f( 1.0f,-1.0f, 1.0f);		// 四邊形的右下頂點(前面)
    glColor3f(1.0f,1.0f,0.0f);			// 顏色改成黃色
    glVertex3f( 1.0f,-1.0f,-1.0f);		// 四邊形的右上頂點(后面)
    glVertex3f(-1.0f,-1.0f,-1.0f);		// 四邊形的左上頂點(后面)
    glVertex3f(-1.0f, 1.0f,-1.0f);		// 四邊形的左下頂點(后面)
    glVertex3f( 1.0f, 1.0f,-1.0f);		// 四邊形的右下頂點(后面)
    glColor3f(0.0f,0.0f,1.0f);			// 顏色改成藍色
    glVertex3f(-1.0f, 1.0f, 1.0f);		// 四邊形的右上頂點(左面)
    glVertex3f(-1.0f, 1.0f,-1.0f);		// 四邊形的左上頂點(左面)
    glVertex3f(-1.0f,-1.0f,-1.0f);		// 四邊形的左下頂點(左面)
    glVertex3f(-1.0f,-1.0f, 1.0f);		// 四邊形的右下頂點(左面)
    glColor3f(1.0f,0.0f,1.0f);			// 顏色改成紫羅蘭色
    glVertex3f( 1.0f, 1.0f,-1.0f);		// 四邊形的右上頂點(右面)
    glVertex3f( 1.0f, 1.0f, 1.0f);		// 四邊形的左上頂點(右面)
    glVertex3f( 1.0f,-1.0f, 1.0f);		// 四邊形的左下頂點(右面)
    glVertex3f( 1.0f,-1.0f,-1.0f);		// 四邊形的右下頂點(右面)
    glEnd();						    // 立方體繪制結束
}

運行效果


Qt5版本NeHe OpenGL教程1-5課源碼鏈接:https://download.csdn.net/download/caoshangpa/10413680

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

  PowerVR GPU系列現(xiàn)可提供從單簇到六簇內核的多種組合   全球移動通信大會,西班牙巴塞羅那 —— 2013 年 2 月 25 日 —&md

關鍵字: 內核 GPU ip powervr g6100 opengl es3.0

長期以來,Android一直為開發(fā)人員提供免費的用戶界面,以補充背景圖片的多樣化創(chuàng)建,甚至在多年前,甚至還支持在背景圖片中使用openGL。 但是,舊的移動設備無法很好地擴展背景圖像,因此移動實時背景圖像的開發(fā)主要由“出...

關鍵字: Android opengl 壁紙

函數原型:?????void glLoadIdentity(void)函數說明:????? OpenGL為我們提供了一個非常簡單的恢復初始坐標系的手段,那就是調用glLoadIdentity()命令。

關鍵字: opengl glloadidentity

pro文件QT -=gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = lesson1 TEMPLATE = app

關鍵字: opengl QT

坐標系統(tǒng)想要弄懂幾何變換,一定要搞清楚OpenGL中的坐標系統(tǒng)。從我們構造模型的局部坐標系(Local/Object Space)經過一系列處理最終渲染到屏幕坐標(Screen Space)下,這過程

關鍵字: opengl 坐標系

被用戶詬病20年后,NVIDIA終于做出讓步,在SIGGRAPH開幕活動中,NVIDIA發(fā)布Studio Driver: SIGGRAPH Edition驅動程序(v431.70),正式為所有GeFo

關鍵字: NVIDIA opengl

在這一課里,將學會如何將紋理映射到立方體的六個面。學習texture map紋理映射(貼圖)有很多好處。比方說您想讓一顆導彈飛過屏幕。根據前幾課的知識,我們最可行的辦法可能是很多個多邊形來構建導彈的輪

關鍵字: nehe opengl

當前光柵位置:? ? 當前光柵位置就是開始繪制下一幅位圖/圖像的屏幕位置。 ?//左下角glRasterPos2f(GLfloat x, GLfloat y);glRasterPos3f(GLfloa

關鍵字: opengl

這一課將把如下圖片做成一個飄動的旗幟,其實主要還是用到了紋理映射。lesson10.h#ifndef?LESSON10_H #define?LESSON10_H #include#include#i

關鍵字: opengl QT

在這一課里,我們將添加光照和鍵盤控制,它讓程序看起來更美觀?,F(xiàn)在設置4個變量來控制繞x軸和y軸旋轉角度的步長,以及繞x軸和y軸的旋轉速度。另外還創(chuàng)建了一個z變量來控制進入屏幕深處的距離。并添加一個布爾

關鍵字: opengl qt5
關閉