nehe 系列教程之七: 光照及紋理過濾
本課將以第一課的**為基礎, 實現光照效果。
首先是物件定義與紋理載入的**:
接著是opengl 初始函式,啟用了光照效果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()
}
繪製函式如下: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...