本文整理汇总了C++中IVideoDriver::getFog方法的典型用法代码示例。如果您正苦于以下问题:C++ IVideoDriver::getFog方法的具体用法?C++ IVideoDriver::getFog怎么用?C++ IVideoDriver::getFog使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IVideoDriver
的用法示例。
在下文中一共展示了IVideoDriver::getFog方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TempColor
void COGLES2MaterialParallaxMapCB::OnSetConstants(IMaterialRendererServices* services, s32 userData)
{
IVideoDriver* driver = services->getVideoDriver();
if (FirstUpdate)
{
WVPMatrixID = services->getVertexShaderConstantID("uWVPMatrix");
WVMatrixID = services->getVertexShaderConstantID("uWVMatrix");
EyePositionID = services->getVertexShaderConstantID("uEyePosition");
LightPositionID = services->getVertexShaderConstantID("uLightPosition");
LightColorID = services->getVertexShaderConstantID("uLightColor");
FactorID = services->getVertexShaderConstantID("uFactor");
TextureUnit0ID = services->getVertexShaderConstantID("uTextureUnit0");
TextureUnit1ID = services->getVertexShaderConstantID("uTextureUnit1");
FogEnableID = services->getVertexShaderConstantID("uFogEnable");
FogTypeID = services->getVertexShaderConstantID("uFogType");
FogColorID = services->getVertexShaderConstantID("uFogColor");
FogStartID = services->getVertexShaderConstantID("uFogStart");
FogEndID = services->getVertexShaderConstantID("uFogEnd");
FogDensityID = services->getVertexShaderConstantID("uFogDensity");
FirstUpdate = false;
}
const core::matrix4 W = driver->getTransform(ETS_WORLD);
const core::matrix4 V = driver->getTransform(ETS_VIEW);
const core::matrix4 P = driver->getTransform(ETS_PROJECTION);
/*core::matrix4 Matrix = P * V * W;
services->setPixelShaderConstant(WVPMatrixID, Matrix.pointer(), 16);
Matrix = V * W;
services->setPixelShaderConstant(WVMatrixID, Matrix.pointer(), 16);
core::vector3df EyePosition(0.0f, 0.0f, 0.0f);
Matrix.makeInverse();
Matrix.transformVect(EyePosition);
services->setPixelShaderConstant(EyePositionID, reinterpret_cast<f32*>(&EyePosition), 3);
Matrix = W;
Matrix.makeInverse();*/
core::matrix4 Matrix_W = W;
core::matrix4 Matrix_V_W = V * W;
core::matrix4 Matrix_P_V_W = P * Matrix_V_W;
core::vector3df EyePosition(0.0f, 0.0f, 0.0f);
services->setPixelShaderConstant(WVPMatrixID, Matrix_P_V_W.pointer(), 16);
services->setPixelShaderConstant(WVMatrixID, Matrix_V_W.pointer(), 16);
Matrix_V_W.makeInverse();
Matrix_V_W.transformVect(EyePosition);
services->setPixelShaderConstant(EyePositionID, reinterpret_cast<f32*>(&EyePosition), 3);
Matrix_W.makeInverse();
const u32 LightCount = driver->getDynamicLightCount();
for (u32 i = 0; i < 2; ++i)
{
SLight CurrentLight;
if (i < LightCount)
CurrentLight = driver->getDynamicLight(i);
else
{
CurrentLight.DiffuseColor.set(0.f, 0.f, 0.f);
CurrentLight.Radius = 1.f;
}
CurrentLight.DiffuseColor.a = 1.f / (CurrentLight.Radius*CurrentLight.Radius);
//Matrix.transformVect(CurrentLight.Position);
Matrix_W.transformVect(CurrentLight.Position);
LightPosition[i] = CurrentLight.Position;
LightColor[i] = CurrentLight.DiffuseColor;
}
services->setPixelShaderConstant(LightPositionID, reinterpret_cast<f32*>(LightPosition), 6);
services->setPixelShaderConstant(LightColorID, reinterpret_cast<f32*>(LightColor), 8);
services->setPixelShaderConstant(FactorID, &Factor, 1);
services->setPixelShaderConstant(TextureUnit0ID, &TextureUnit0, 1);
services->setPixelShaderConstant(TextureUnit1ID, &TextureUnit1, 1);
services->setPixelShaderConstant(FogEnableID, &FogEnable, 1);
if (FogEnable)
{
SColor TempColor(0);
E_FOG_TYPE TempType = EFT_FOG_LINEAR;
bool TempPerFragment = false;
bool TempRange = false;
driver->getFog(TempColor, TempType, FogStart, FogEnd, FogDensity, TempPerFragment, TempRange);
FogType = (s32)TempType;
FogColor = SColorf(TempColor);
//.........这里部分代码省略.........