本文整理汇总了C++中VertexFormat::addNormal方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexFormat::addNormal方法的具体用法?C++ VertexFormat::addNormal怎么用?C++ VertexFormat::addNormal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexFormat
的用法示例。
在下文中一共展示了VertexFormat::addNormal方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WinMain
int WINAPI WinMain( HINSTANCE inst, HINSTANCE, LPSTR cmdLine, int cmdShow )
{
Window wnd;
P(Context) context = 0;
int sw = 640;
int sh = 480;
int sbpp = 0;
bool fullscreen = (0 != sbpp);
P(Scene) root = 0;
try
{
// args
String fxname = cmdLine;
if ( fxname == "" )
fxname = "bump.fx";
// init window
DWORD style = WS_VISIBLE;
DWORD styleEx = 0;
if ( fullscreen )
{
style |= WS_POPUP;
styleEx |= WS_EX_TOPMOST;
}
else
{
style |= WS_OVERLAPPEDWINDOW;
}
wnd.create( "sgtestclass", "sg test", style, styleEx, 0, 0, sw, sh, inst, 0 );
// init context
context = new Context( "gd_dx8" );
context->open( sw, sh, sbpp, 75,
Context::SURFACE_TARGET +
Context::SURFACE_DEPTH +
Context::SURFACE_STENCIL,
Context::RASTERIZER_HW,
Context::VERTEXP_HW,
Context::TC_DISABLED );
// scene
root = new Scene;
root->setName( "root" );
// camera
P(Camera) cam = new Camera;
cam->setName( "cam" );
cam->setPosition( Vector3(0,1.5f,-3) );
Matrix3x3 rot = Matrix3x3( Vector3(1,0,0), Math::toRadians(30.f) );
cam->setRotation( rot );
cam->setHorizontalFov( Math::toRadians(100.f) );
cam->setFront( 0.2f );
cam->setBack( 100.f );
cam->linkTo( root );
// light
P(DirectLight) lt = new DirectLight;
lt->setName( "keylight" );
lt->setIntensity( 0.5f );
lt->linkTo( root );
lt->lookAt( Vector3(-0.5f,-1,0) );
// resources
P(Texture) difmap = loadTex( "diffuse_map.tga" );
P(Texture) normmap = loadTex( "normal_map.tga" );
P(CubeTexture) envmap = loadCubeTex( "TestCubeTexture1.dds" );
// read vb and ib data
FileInputStream vbin( "vb.dat" );
Array<uint8_t> vbbytes( vbin.available() );
vbin.read( vbbytes.begin(), vbbytes.size() );
int vertexSize = 4*3*4;
int vertices = vbbytes.size() / vertexSize;
FileInputStream ibin( "ib.dat" );
Array<uint8_t> ibbytes( ibin.available() );
ibin.read( ibbytes.begin(), ibbytes.size() );
int indexSize = 2;
int indices = ibbytes.size() / indexSize;
// geometry (indirectly from vb and ib dat)
VertexFormat vf;
vf.addNormal().addTextureCoordinate(3);
P(Model) model = new Model( vertices, indices, vf );
{
VertexAndIndexLock<Model> lk( model, Model::LOCK_READWRITE );
for ( int i = 0 ; i < vertices ; ++i )
{
model->setVertexPositions( i, (Vector3*)(vbbytes.begin()+i*vertexSize) );
model->setVertexNormals( i, (Vector3*)(vbbytes.begin()+12+i*vertexSize) );
model->setVertexTextureCoordinates( i, 0, 3, (float*)(vbbytes.begin()+24+i*vertexSize) );
}
void* idata;
int istride;
model->getIndexData( &idata, &istride );
memcpy( idata, ibbytes.begin(), ibbytes.size() );
}
//.........这里部分代码省略.........