本文整理汇总了C++中IVector::SetZ方法的典型用法代码示例。如果您正苦于以下问题:C++ IVector::SetZ方法的具体用法?C++ IVector::SetZ怎么用?C++ IVector::SetZ使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IVector
的用法示例。
在下文中一共展示了IVector::SetZ方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Draw
void Sun::Draw ()
{
glPushMatrix ();
glDisable (GL_FOG);
glEnable (GL_TEXTURE_2D);
unsigned char LightingOn = glIsEnabled (GL_LIGHTING);
if (LightingOn == GL_TRUE)
{
glDisable (GL_LIGHTING);
}
glEnable (GL_ALPHA_TEST);
glDisable (GL_CULL_FACE);
glAlphaFunc (GL_GREATER, 0.0f);
// Sun should always be 90.0 feet away from camera
IVector camPos = mpEngine->GetCamera ()->GetPosition ();
glTranslatef (camPos.GetX (), camPos.GetY (), camPos.GetZ ());
IVector sunPos = mpEngine->GetSunlightVector ().GetReverseVector ();
sunPos *= 90.0f;
const float sunRadius = 10.0f;
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable (GL_BLEND);
// Draw the sun
mpTextureManager->LoadTexture (mTextureKey);
glBegin (GL_QUADS);
glColor3f (1.0f, 1.0f, 1.0f);
glTexCoord2f (0.0f, 0.0f);
glVertex3f (sunPos.GetX () - sunRadius, sunPos.GetY () - sunRadius, sunPos.GetZ ());
glTexCoord2f (1.0f, 0.0f);
glVertex3f (sunPos.GetX () + sunRadius, sunPos.GetY () - sunRadius, sunPos.GetZ ());
glTexCoord2f (1.0f, 1.0f);
glVertex3f (sunPos.GetX () + sunRadius, sunPos.GetY () + sunRadius, sunPos.GetZ ());
glTexCoord2f (0.0f, 1.0f);
glVertex3f (sunPos.GetX () - sunRadius, sunPos.GetY () + sunRadius, sunPos.GetZ ());
glEnd ();
mFlareTextureKey = -1;
// Draw the lens flare
if (mFlareTextureKey != -1)
{
IVector flareOffset = sunPos - mpEngine->GetCamera ()->GetForwardVector ();
IVector flarePos = sunPos + 1.0f / sunPos.DotProduct (mpEngine->GetCamera ()->GetForwardVector ()) * flareOffset;
flarePos.SetZ (flarePos.GetZ () + 10.0f);
float flareRadius = 10.0f;
mpTextureManager->LoadTexture (mFlareTextureKey);
glBegin (GL_QUADS);
glTexCoord2f (0.0f, 0.0f);
glVertex3f (flarePos.GetX () - flareRadius, flarePos.GetY () - flareRadius, flarePos.GetZ ());
glTexCoord2f (1.0f, 0.0f);
glVertex3f (flarePos.GetX () + flareRadius, flarePos.GetY () - flareRadius, flarePos.GetZ ());
glTexCoord2f (1.0f, 1.0f);
glVertex3f (flarePos.GetX () + flareRadius, flarePos.GetY () + flareRadius, flarePos.GetZ ());
glTexCoord2f (0.0f, 1.0f);
glVertex3f (flarePos.GetX () - flareRadius, flarePos.GetY () + flareRadius, flarePos.GetZ ());
glEnd ();
}
glAlphaFunc (GL_ALWAYS, 0.0f);
glDisable (GL_BLEND);
glDisable (GL_ALPHA_TEST);
glDisable (GL_TEXTURE_2D);
glEnable (GL_CULL_FACE);
glEnable (GL_FOG);
if (LightingOn == GL_TRUE)
{
glEnable (GL_LIGHTING);
}
glPopMatrix ();
}