Пример #1
0
HRESULT CALLBACK OnD3D11DeviceCreated(_In_ ID3D11Device* pd3dDevice, _In_ const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc, _In_opt_ void* pUserContext)
{
	HRESULT hr = S_OK;

	// 초기화 코드 작성...

	CompileShader::Create(&g_shader, L"Shaders\\lightShader.fx");

	LoaderObj loaderobj;
	g_ground = loaderobj.BuildMeshFromFile(L"Models\\ground.obj", L"Textures\\grass.jpg");

	LoaderMd5 loadermd5;
	g_marine = loadermd5.BuildMeshFromFile(L"Models\\zealot.md5mesh");
	g_marineClone = g_marine->Clone();
	
	
	/*XMMATRIX mscale = XMMatrixScaling(1.0f, 1.0f, 1.0f);
	XMMATRIX mtrans = XMMatrixTranslation(0.0f, 0.0f, 0.0f);
	XMMATRIX world = mscale * mtrans;
	XMFLOAT4X4 fworld;
	XMStoreFloat4x4(&fworld, world);	
	g_ground->setWorld(fworld);
	g_marine->setWorld(fworld);*/
	
	/*XMMATRIX mtrans2 = XMMatrixTranslation(2.0f, 0.0f, 0.0f);
	world = mscale * mtrans2;
	XMFLOAT4X4 fworld2;
	XMStoreFloat4x4(&fworld2, world);
	g_marineClone->setWorld(fworld2);*/

	return S_OK;
}
Пример #2
0
HRESULT CALLBACK OnD3D11DeviceCreated(_In_ ID3D11Device* pd3dDevice, _In_ const DXGI_SURFACE_DESC* pBackBufferSurfaceDesc, _In_opt_ void* pUserContext)
{
	HRESULT hr = S_OK;

	// 초기화 코드 작성...

	CompileShader::Create(&g_shader, L"Shaders\\lightShader.fx");
	hr = g_shader->CreateTextureFromFile(L"Textures\\grass.jpg");


	LoaderObj loader;	
	//g_mesh	= loader.BuildCube();
	g_mesh = loader.BuildMeshFromFile(L"Models\\ground.obj");
	g_meshLight = loader.BuildMeshFromFile(L"Models\\ground.obj");
	
	XMMATRIX mscale = XMMatrixScaling(1.0f, 1.0f, 1.0f);
	XMMATRIX mtrans = XMMatrixTranslation(0.0f, 0.0f, 0.0f);
	XMMATRIX world = mscale * mtrans;
	XMFLOAT4X4 fworld;

	//1. XMMATRIX -> FLOAT4X4 
	XMStoreFloat4x4(&fworld, world);	
	//2. FLOAT4X4 -> XMMATRIX
	//world = XMLoadFloat4x4(&fworld);
			
	g_mesh->setWorld(fworld);




	return S_OK;
}
Пример #3
0
int main(int argc, char* argv[])
{
    LoaderObj *loader = new LoaderObj();
    loader->loadFile("test.obj");
    ModelData data;
    loader->cloneData(data);
	delete loader;

    Encoder *encoder = new Encoder();
    // FIXME: set data should clone, but here is not.
    encoder->setData(data); 
    encoder->saveFile("test.objc");

	data.dispose();
	
	return 0;
}
Пример #4
0
int main (int argc, char **argv)
{  
  //Initialize GLUT
  initGlut(argc, argv);
  
  Kernel kernel;
  kernel.enableVerticalSync( false );
  renderer = kernel.getRenderer();
  printf( "Kernel loaded\n" );
  
  //Load shape model
  LoaderObj ldr;
  File f( "zekko.obj" );
  ldr.setUVMeshClass( Class( ETexMesh ));
  
  int start = GE::Time::GetTicks();
  ldr.loadFile( f.getPathName() );
  int end = GE::Time::GetTicks();
  printf( "Time: %d\n", end - start );
  
  PolyMesh *dmesh;
  uvmesh = (ETexMesh*) ldr.getFirstResource( Class(TexMesh) );
  dmesh = (PolyMesh*) ldr.getFirstResource( Class(PolyMesh) );
  zekko = (PolyMeshActor*) ldr.getFirstObject( Class(PolyMeshActor) );
  if (dmesh == NULL) return EXIT_FAILURE;
  if (uvmesh == NULL) return EXIT_FAILURE;
  if (zekko == NULL) return EXIT_FAILURE;
  
  //Check if UV mesh type correct
  printf( "uvmesh = %s\n", StringOf( ClassOf( zekko->getTexMesh() )));
  
  printf( "uvmesh %s ETexMesh\n",
          SafeCast( ETexMesh, zekko->getTexMesh() ) ?
          "IS" : "is NOT");
  
  printf( "uvmesh %s TexMesh\n",
          SafeCast( TexMesh, zekko->getTexMesh() ) ?
          "IS" : "is NOT");
  
  printf( "uvmesh %s Resource\n",
          SafeCast( Resource, zekko->getTexMesh() ) ?
          "IS" : "is NOT");
  
  printf( "uvmesh %s PolyMesh\n",
          SafeCast( PolyMesh, zekko->getTexMesh() ) ?
          "IS" : "is NOT");
  
  //Setup camera
  cam3D.translate( 0,35,-100 );
  cam3D.setCenter( center );
  //cam3D.setNearClipPlane(100.0f);
  //cam3D.setFarClipPlane(100000.0f);
  
  //Find model center
  findCenter();
  
  //Set half bunny green
  for (PolyMesh::FaceIter f(dmesh); !f.end(); ++f) {
    //f->smoothGroups = 0x1;
    if (f->firstHedge()->dstVertex()->point.y > center.y)
      dmesh->setMaterialID( *f, 1 ); }

  //Convert to static mesh
  //dmesh->updateNormals();
  smesh.fromPoly( dmesh, uvmesh );
  
  //Load texture image
  imgDiff.readFile( "texture.jpg", "" );
  
  //Create texture from image
  texDiff = new Texture;
  texDiff->fromImage( &imgDiff );
  
  //Load specularity image
  Image imgSpec;
  imgSpec.readFile( "specularity.jpg", "" );

  //Create specularity texture
  texSpec = new Texture();
  texSpec->fromImage(&imgSpec);
  
  //Create material using texture
  PhongMaterial mat;
  mat.setDiffuseTexture( texDiff );
  //mat.setSpecularityTexture( texSpec );
  mat.setDiffuseColor( Vector3( 1,0.0f,0.0f ));
  mat.setAmbientColor( Vector3( 0.2f,0.2f,0.2f ));
  mat.setSpecularity( 1.0f );
  mat.setGlossiness( 0.2f );
  
  PhongMaterial mat2;
  mat2.setDiffuseTexture( texDiff );
  //mat2.setSpecularityTexture( texSpec );
  mat2.setDiffuseColor( Vector3( 0.0f, 1.0f, 0.0f ));
  mat2.setAmbientColor( Vector3( 0.2f, 0.2f, 0.2f ));
  mat2.setSpecularity( 1.0f );
  mat2.setGlossiness( 0.2f );
  
  MultiMaterial mm;
  mm.setNumSubMaterials( 2 );
  mm.setSubMaterial( 0, &mat );
  mm.setSubMaterial( 1, &mat2 );
  zekko->setMaterial( &mm );

  scene = new Scene;
  scene->addChild( zekko );

  //Light *light = new SpotLight( Vector3(-200,200,-200), Vector3(1,-1,1), 60, 0 );
  Light *light = new HeadLight;
  scene->addChild( light );
  
  lblFps.setLocation( Vector2( 0.0f,(Float)resY ));
  lblFps.setColor( Vector3( 1.0f,1.0f,1.0f ));
  
  //Run application
  atexit( cleanup );
  glutMainLoop();
  cleanup();

  return EXIT_SUCCESS;
}