-------西昌.何雨锋 写文字
在3维场景中写文字:
1、只能写英文,但是可以指定英文大小、字体:
//定义:
ITVScreen2DText str2d1;
str2d1=CreateTVScreen2DText();
str2d1->TextureFont_Create("font1","宋体",16,tvfalse,tvfalse,tvfalse,tvtrue);
//循环中:
str2d1->ACTION_BeginText();
str2d1->TextureFont_DrawText("warning!the nuke weapon ready to fire!",170,170,global1->RGBA(255,255,255,1),"font1");
str2d1->ACTION_EndText();
//记得释放资源:
str2d1->Release();
str2d1=NULL;
2、可以显示中文,但不能指定字体、大小:
只用在循环中有:
scene1->DrawText("实验制作",100,100,global1->RGBA(1,0,0,1));
-------------------------------------------------
在3维场景中显示一个始终朝向观看者的2维画面(而且该剪贴版可以被其他物体遮住):记得CS中的蹲坑者头上的画面吗?
//首先建立出一个mesh
ITVMesh frame1;
//然后再用场景1读取一个common.shader(做什么用哦?)
scene1->LoadShaders("common.shader");
//用场景1来建立一个剪贴板,并将其赋予给已有的mesh,但是里面那几个枚举常量居然不能用数字代替,也不能用D3D中已定义的常量,而只能将这常量强制转化成TV中的同义常量,让我晕死吧!createbillboard第一个变量是一个从global中得到的已有的图画,
frame1=scene1->CreateBillboard(global1->GetTex("wall1"),50,50,50,200,200,"coco",tvfalse,(enum TrueVision3D::CONST_D3DBLEND)D3DBLEND_ZERO,(enum TrueVision3D::CONST_D3DBLEND)D3DBLEND_ZERO,global1->RGBA(255,255,255,1),tvfalse);
//由于frame1本身是个mesh,那么在循环部分可以由scene1.renderallmesh就可以了,不用单独给出循环语句,最后在释放部分记得释放资源用frame1->destroy,而不是release,当然也可由scene统一释放。
3、写字体大小可以自定的中文方法:
ITVScreen2DText str2d1;
str2d1=CreateTVScreen2DText();
str2d1->NormalFont_Create("font1","宋体",16,tvfalse,tvfalse,tvfalse,tvtrue);
//循环中:
str2d1->ACTION_BeginText();
str2d1->NormalFont_DrawText("warning!the nuke weapon ready to fire!",170,170,global1->RGBA(255,255,255,1),"font1");
str2d1->ACTION_EndText();
//记得释放资源:
str2d1->Release();
str2d1=NULL;