NeHe教程Qt實現 lesson07

2021-06-04 23:57:24 字數 1800 閱讀 6850

nehe 系列教程之七: 光照及紋理過濾

本課將以第一課的**為基礎, 實現光照效果。

首先是物件定義與紋理載入的**:

namespace ;             // ambient light values ( new )

glfloat lightdiffuse= ; // diffuse light values ( new )

glfloat lightposition= ; // light position ( new )

gluint filter; // which filter to use

gluint texture[3]; // storage for 3 textures

qvectorvertices;

qvectortexcoords;

qvectornormals;

void makeobject()

}

接著是opengl 初始函式,啟用了光照效果

void myglwidget::initializegl()

繪製函式如下:

void myglwidget::paintgl()

最後按鍵處理,主要是開啟和關閉光照,以及切換不同的紋理過濾方式:

void myglwidget::keyreleaseevent(qkeyevent *e)

}

void myglwidget::keypressevent(qkeyevent *e)

else

break;

case qt::key_l:

if (!lp)

else // otherwise

}break;

case qt::key_pageup:

z -= 0.02f;

break;

case qt::key_pagedown:

z += 0.02f;

break;

case qt::key_up:

xspeed -= 0.01f;

break;

case qt::key_down:

xspeed += 0.01f;

break;

case qt::key_right:

yspeed += 0.01f;

break;

case qt::key_left:

yspeed -= 0.01f;

break;

case qt::key_escape:

qmessagebox::standardbutton reply;

reply = qmessagebox::question(null, "nehe",

"do you want to exit?",

qmessagebox::yes | qmessagebox::no,

qmessagebox::yes);

if (reply == qmessagebox::yes)

break;

default:

qglwidget::keypressevent(e);

break;}}

執行效果圖如下所示:

NeHe教程Qt實現 lesson04

nehe 系列教程之四 多邊形旋轉 本課在第三課的基礎上增加了旋轉多邊形的 具體如下 首先,在標頭檔案中增加了兩個旋轉因子 ifndef myglwidget h define myglwidget h include class qtimer class qkeyevent class myglw...

NeHe教程Qt實現 lesson12

nehe 系列教程之十二 顯示列表 本課主要演示了顯示列表的使用。基於第六課。顯示列表的主要介面 glgenlists glnewlist glcalllist 具體來看 中的使用 namespace static glfloat topcol 5 3 array for top colors gl...

NeHe教程Qt實現 lesson17

nehe 系列教程之十四 2d紋理字型 本課展示2d紋理生成字型。首先是字型庫的建立及相關字元輸出函式 namespace struct fyjbitmapfont static fyjbitmapchar chars1 128 static fyjbitmapchar chars2 128 con...