我想修改模型的頂點。在以前dx的開發經歷中, 鎖定頂點緩衝後改頂點色是很容易的。但是在ogre中,我卻沒有成功實現。
//設定模型的頂點色
voidcd3deffect::fun_setmodecolor(dwordvcolor)
else
hardwarevertexbuffersharedptrdsthvbpos = tvertexdata->vertexbufferbinding->getbuffer(poselem3->getsource());
size_t sizeinbytes = dsthvbpos->getsizeinbytes();
size_t numvertices = dsthvbpos->getnumvertices();
size_t sizevertices = dsthvbpos->getvertexsize();
size_t verticescount= tvertexdata->vertexcount;
unsigned char* pvert = static_cast(dsthvbpos->lock(0, sizeinbytes , hardwarebuffer::hbl_discard));
float *dstdatapos ;
//遍歷所有頂點
for(int i = 0 ; i < verticescount ; i++, pvert += sizevertices )
我很迷茫,ogre啊ogre,你為何不讓我修改它呢?為何修改頂點了完全不管用呢?
沒辦法,只好用shader來做了。雖然結果看起來是沒問題,但我並沒有成功的修改頂點的色彩。。。。。。。。
if(false == mobjmaterial.isnull())
{dwordtred= vcolor&0xff;
dwordtgreen= (vcolor >>8)&0xff;
dwordtblue= (vcolor>>16)&0xff;
dwordtalpha = 255;
vector4 mycolor(float(tred/255.0),float(tgreen/255.0),float(tblue/255.0),1.0);
subentity* sub = mobjent->getsubentity(0);
sub->setcustomparameter(1, mycolor);
注:~經群友skillzero指點。證實ogre可以修改頂點色。需要做的是修改材質對應的pass部分:
文件:手冊:1-4-0:3.1.2 渲染通路(pass)
ambient
設定此渲染通路中周圍環境的反射係數。當asm,cg,hlsl(high level shader language高階渲染語言)使用時,該屬性無效。與glsl()一起使用時,渲染器可以讀opengl材質狀態。
格式: ambient (| vertexcolour)渲染通路的基本顏色取決於各頂點紅色,綠色和藍色光的反射量。此屬性決定了反射多少環境光(無目標的全域性光)。也可以如在網格中定義的一樣,通過使用關鍵字vertexcolour而不是使用顏色值,使環境反射係數跟蹤頂點顏色。預設值是全白的,意思就是物體整個完全被照亮。如果你想要看見散射和鏡面反射的效果,就要減少這個屬性的相關數值,或者改變顏色的混合,使物體有乙個不是白色的基礎色。如果使用了'lighting off'屬性將動態光照被關閉了或者任何紋理層有'colour_op replace'屬性,那麼「ambient」這個屬性無效。數值的取值範圍在0.0到1.0之間。
示例: ambient 0.0 0.8 0.0
我忘記了~
diffuse vertexcolour
specular vertexcolour
ambient vertexcolour
頂點色的訪問
頂點函式是在每個頂點被傳送到gpu之前被呼叫一次。它的作用是從模型座標系中得到三維座標,然後再轉換到其渲染到螢幕時在螢幕座標系中的二維位置。因此,通過頂點函式,我們可以修改頂點的位置 顏色和uv座標。一旦我們完成了對頂點的修改後,就會進入到surf函式的執行。與頂點函式是逐頂點執行的方式不同,sur...
ogre中的座標系統
ogre中以樹狀組織場景中所有的物體 物體擁有位置方位縮放等屬性,同時還應有頂點材質等屬性。ogre很好地將二者分離開來,位置方面的屬性等單獨放在node scenenode中,頂點等放在movableobject的派生體系中。它以樹狀結構組織node,每乙個node下可以掛接多個不同的moveab...
RenderWare中修改模型的材質顏色
設定atomic為某種顏色 設定geometry標誌,flag rpgeometrytextured rpgeometrymodulatematerialcolor。然後設定每個metrial color為該顏色。注意geometry共用的情況。給geometry設定顏色和恢復的方法 設定顏色rpg...