本文整理汇总了C++中TextureCache::get_texture方法的典型用法代码示例。如果您正苦于以下问题:C++ TextureCache::get_texture方法的具体用法?C++ TextureCache::get_texture怎么用?C++ TextureCache::get_texture使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TextureCache
的用法示例。
在下文中一共展示了TextureCache::get_texture方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: build_from_mqo
//
// MQO
// 面倒なので四角ポリゴンはないものと仮定
//
void build_from_mqo(
mqo_reader::document_type& doc, float scale, DWORD color,
TextureCache& tc )
{
clear();
// マテリアル
for( mqo_reader::materials_type::const_iterator i =
doc.materials.begin() ;
i != doc.materials.end() ;
++i ) {
SubModel m;
m.vb = NULL;
m.ib = NULL;
m.texture = NULL;
if( (*i).texture != "" ) {
m.texture = tc.get_texture( (*i).texture );
}
submodels_.push_back( m );
}
{
// default material
SubModel m;
m.vb = NULL;
m.ib = NULL;
submodels_.push_back( m );
}
// 頂点, 面
for( mqo_reader::objdic_type::const_iterator i =
doc.objects.begin() ;
i != doc.objects.end() ;
++i ) {
const mqo_reader::object_type& obj = (*i).second;
// dictionary:
// ( source vertex index, uv ) => destination vertex index
struct VertexKey {
int index;
D3DXVECTOR2 uv;
VertexKey(){}
VertexKey( int aindex, const D3DXVECTOR2& auv )
: index( aindex ), uv( auv ) { }
bool operator<( const VertexKey& a ) const
{
if( index < a.index ) { return true; }
if( a.index < index ) { return false; }
if( uv.x < a.uv.x ) { return true; }
if( a.uv.x < uv.x ) { return false; }
return uv.y < a.uv.y;
}
};
std::vector< std::map< VertexKey, int > > used_vertices;
used_vertices.resize( submodels_.size() );
// マテリアルごとに使用頂点を分類
for( mqo_reader::faces_type::const_iterator j =
obj.faces.begin() ;
j != obj.faces.end() ;
++j ) {
const mqo_reader::face_type& face = *j;
int material_index = face.material_index;
if( material_index == -1 ) {
material_index =
int( submodels_.size() - 1 );
}
int i0 = face.vertex_indices[0];
int i1 = face.vertex_indices[1];
int i2 = face.vertex_indices[2];
D3DXVECTOR2 uv0( face.uv[0].u, face.uv[0].v );
D3DXVECTOR2 uv1( face.uv[1].u, face.uv[1].v );
D3DXVECTOR2 uv2( face.uv[2].u, face.uv[2].v );
std::map< VertexKey, int >& c =
used_vertices[material_index];
c[ VertexKey( i0, uv0 ) ] = -1 ;
c[ VertexKey( i1, uv1 ) ] = -1 ;
c[ VertexKey( i2, uv2 ) ] = -1 ;
}
// マテリアルごとに使われている頂点を追加
size_t n = submodels_.size();
for( size_t i = 0 ; i < n ; i++ ) {
SubModel& m = submodels_[i];
std::map< VertexKey, int >& c = used_vertices[i];
int no = int( m.vertex_source.size() );
for( std::map< VertexKey, int >::iterator j = c.begin();
j != c.end() ;
++j ) {
const mqo_reader::vertex_type& src =
obj.vertices[(*j).first.index];
//.........这里部分代码省略.........