|
Effect->BeginPass( 0 );
for( int i = 0; i<object.Size( ); i++ )
{
Effect->SetMatrix(hMatrix, &object->GetWorldMatrix( ) ); // 这里改变每个模型的世界矩阵
Effect->CommitChanges( );
object->render( );
}
Effect->EndPass( );
=========================
for( int i = 0; i<object.Size( ); i++ )
{
Effect->SetMatrix(hMatrix, &object->GetWorldMatrix( ) ); // 这里改变每个模型的世界矩阵
Effect->BeginPass( 0 );
object->render( );
Effect->EndPass( );
}
============================
上面这两种方式,哪种效率更高呢?
对于BeginPass和CommitChanges我在网络上查找到了一些信息,这是SDK里没有提到的。下面是几种说法。
一种说法是:
BeginPass()会更新所有的state,CommitChange()只提交BeginPass()后修改过的。
另一种说法是:
BeginPass()会更新所有的state,CommitChange()没修改过的参数也会重新提交。
|
|