修改OGRE中的模型頂點色

2021-08-23 14:52:05 字數 1919 閱讀 6409

我想修改模型的頂點。在以前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)

數值的取值範圍在0.0到1.0之間。

示例: ambient 0.0 0.8 0.0

渲染通路的基本顏色取決於各頂點紅色,綠色和藍色光的反射量。此屬性決定了反射多少環境光(無目標的全域性光)。也可以如在網格中定義的一樣,通過使用關鍵字vertexcolour而不是使用顏色值,使環境反射係數跟蹤頂點顏色。預設值是全白的,意思就是物體整個完全被照亮。如果你想要看見散射和鏡面反射的效果,就要減少這個屬性的相關數值,或者改變顏色的混合,使物體有乙個不是白色的基礎色。如果使用了'lighting off'屬性將動態光照被關閉了或者任何紋理層有'colour_op replace'屬性,那麼「ambient」這個屬性無效。

我忘記了~

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...