本文整理汇总了C++中MatrixStack::LoadIdentity方法的典型用法代码示例。如果您正苦于以下问题:C++ MatrixStack::LoadIdentity方法的具体用法?C++ MatrixStack::LoadIdentity怎么用?C++ MatrixStack::LoadIdentity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MatrixStack
的用法示例。
在下文中一共展示了MatrixStack::LoadIdentity方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadMenuPerspective
void RageDisplay::LoadMenuPerspective( float fovDegrees, float fVanishPointX, float fVanishPointY )
{
/* fovDegrees == 0 looks the same as an ortho projection. However,
* we don't want to mess with the ModelView stack because
* EnterPerspectiveMode's preserve location feature expectes there
* not to be any camera transforms. So, do a true ortho projection
* if fovDegrees == 0. Perhaps it would be more convenient to keep
* separate model and view stacks like D3D?
*/
if( fovDegrees == 0 )
{
float left = 0, right = SCREEN_WIDTH, bottom = SCREEN_HEIGHT, top = 0;
g_ProjectionStack.LoadMatrix( GetOrthoMatrix(left, right, bottom, top, SCREEN_NEAR, SCREEN_FAR) );
g_ViewStack.LoadIdentity();
}
else
{
CLAMP( fovDegrees, 0.1f, 179.9f );
float fovRadians = fovDegrees / 180.f * PI;
float theta = fovRadians/2;
float fDistCameraFromImage = SCREEN_WIDTH/2 / tanf( theta );
fVanishPointX = SCALE( fVanishPointX, SCREEN_LEFT, SCREEN_RIGHT, SCREEN_RIGHT, SCREEN_LEFT );
fVanishPointY = SCALE( fVanishPointY, SCREEN_TOP, SCREEN_BOTTOM, SCREEN_BOTTOM, SCREEN_TOP );
fVanishPointX -= SCREEN_CENTER_X;
fVanishPointY -= SCREEN_CENTER_Y;
/* It's the caller's responsibility to push first. */
g_ProjectionStack.LoadMatrix(
GetFrustumMatrix(
(fVanishPointX-SCREEN_WIDTH/2)/fDistCameraFromImage,
(fVanishPointX+SCREEN_WIDTH/2)/fDistCameraFromImage,
(fVanishPointY+SCREEN_HEIGHT/2)/fDistCameraFromImage,
(fVanishPointY-SCREEN_HEIGHT/2)/fDistCameraFromImage,
1,
fDistCameraFromImage+1000 ) );
g_ViewStack.LoadMatrix(
RageLookAt(
-fVanishPointX+SCREEN_CENTER_X, -fVanishPointY+SCREEN_CENTER_Y, fDistCameraFromImage,
-fVanishPointX+SCREEN_CENTER_X, -fVanishPointY+SCREEN_CENTER_Y, 0,
0.0f, 1.0f, 0.0f) );
}
}
示例2: LoadMenuPerspective
void RageDisplay::LoadMenuPerspective( float fovDegrees, float fWidth, float fHeight, float fVanishPointX, float fVanishPointY )
{
// fovDegrees == 0 gives ortho projection.
if( fovDegrees == 0 )
{
float left = 0, right = fWidth, bottom = fHeight, top = 0;
g_ProjectionStack.LoadMatrix( GetOrthoMatrix(left, right, bottom, top, -1000, +1000) );
g_ViewStack.LoadIdentity();
}
else
{
CLAMP( fovDegrees, 0.1f, 179.9f );
float fovRadians = fovDegrees / 180.f * PI;
float theta = fovRadians/2;
float fDistCameraFromImage = fWidth/2 / tanf( theta );
fVanishPointX = SCALE( fVanishPointX, 0, fWidth, fWidth, 0 );
fVanishPointY = SCALE( fVanishPointY, 0, fHeight, fHeight, 0 );
fVanishPointX -= fWidth/2;
fVanishPointY -= fHeight/2;
// It's the caller's responsibility to push first.
g_ProjectionStack.LoadMatrix(
GetFrustumMatrix(
(fVanishPointX-fWidth/2)/fDistCameraFromImage,
(fVanishPointX+fWidth/2)/fDistCameraFromImage,
(fVanishPointY+fHeight/2)/fDistCameraFromImage,
(fVanishPointY-fHeight/2)/fDistCameraFromImage,
1,
fDistCameraFromImage+1000 ) );
g_ViewStack.LoadMatrix(
RageLookAt(
-fVanishPointX+fWidth/2, -fVanishPointY+fHeight/2, fDistCameraFromImage,
-fVanishPointX+fWidth/2, -fVanishPointY+fHeight/2, 0,
0.0f, 1.0f, 0.0f) );
}
}
示例3: LoadIdentity
void RageDisplay::LoadIdentity()
{
g_WorldStack.LoadIdentity();
}