本文整理汇总了C++中osg::Matrix::getValues方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix::getValues方法的具体用法?C++ Matrix::getValues怎么用?C++ Matrix::getValues使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类osg::Matrix
的用法示例。
在下文中一共展示了Matrix::getValues方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateSpecialParameter
static
void updateSpecialParameter(
OSG::SHLChunk::GetUniformLocProc getUniformLocation,
OSG::DrawEnv *action,
GLuint program )
{
#if 0
if(action->getCamera() == NULL || action->getViewport() == NULL)
{
FWARNING(("updateSpecialParameter : Can't update OSGSpecialParameter"
"parameter, camera or viewport is NULL!\n"));
return;
}
// uploads the camera orientation.
OSG::Matrix m;
action->getCamera()->getViewing(m,
action->getViewport()->getPixelWidth(),
action->getViewport()->getPixelHeight());
m.invert();
m[3].setValues(0, 0, 0, 1);
//std::cout << "uploading matrix " << m << std::endl;
// get "glUniformMatrix4fvARB" function pointer
OSGGLUNIFORMMATRIXFVARBPROC uniformMatrix4fv =
reinterpret_cast<OSGGLUNIFORMMATRIXFVARBPROC>(
action->getWindow()->getFunction(
OSG::SHLChunk::getFuncUniformMatrix4fv()));
GLint location = getUniformLocation(program, "OSGSpecialParameter");
if(location != -1)
uniformMatrix4fv(location, 1, GL_FALSE, m.getValues());
#endif
}
示例2: updateStateUniforms
void CgFXPassChunk::updateStateUniforms(DrawEnv *pEnv)
{
CgFXMaterial *pMat = _sfMaterial.getValue();
OSG_ASSERT(pMat != NULL);
CGeffect pEffect = pMat->getEffect ();
UInt32 uiStateVars = pMat->getStateVariables();
const std::string *vStateVarNames = pMat->getStateVarNames ();
UInt32 uiMask = 0x0001;
OSG_ASSERT(pEffect != NULL);
Matrix mObj2World = pEnv->getObjectToWorld();
std::string szTmp;
for(UInt32 i = 0; i < CgFXMaterial::NumStateVars; ++i)
{
if(uiStateVars == 0x0000)
break;
switch(uiStateVars & uiMask)
{
case CgFXMaterial::CgProjectionMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgProjection].c_str());
CgFXMaterial::checkForCgError("cgGetNamedEffectParameter",
NULL);
OSG_ASSERT(pMatrixParam != NULL);
cgGLSetMatrixParameterfc(
pMatrixParam,
pEnv->_openGLState.getProjection().getValues());
CgFXMaterial::checkForCgError("cgGLSetMatrixParameterfc", NULL);
}
break;
case CgFXMaterial::CgModelViewProjectionMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgModelViewProjection].c_str());
CgFXMaterial::checkForCgError("cgGetNamedEffectParameter",
NULL);
OSG_ASSERT(pMatrixParam != NULL);
Matrix mWorld2Scrn = pEnv->getWorldToScreen();
mWorld2Scrn.mult(mObj2World);
cgGLSetMatrixParameterfc(pMatrixParam,
mWorld2Scrn.getValues());
CgFXMaterial::checkForCgError("cgGLSetMatrixParameterfc",
NULL);
}
break;
// -------------
// Model | World
// -------------
case CgFXMaterial::CgModelMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgModel].c_str());
CgFXMaterial::checkForCgError("cgGetNamedEffectParameter",
NULL);
OSG_ASSERT(pMatrixParam != NULL);
cgGLSetMatrixParameterfc(pMatrixParam,
mObj2World.getValues());
CgFXMaterial::checkForCgError("cgGLSetMatrixParameterfc",
NULL);
}
break;
case CgFXMaterial::CgModelIMask:
{
CGparameter pMatrixParam =
//.........这里部分代码省略.........
示例3: updateStateUniforms
void CgFXPassChunk::updateStateUniforms(DrawEnv *pEnv)
{
CgFXMaterial *pMat = _sfMaterial.getValue();
OSG_ASSERT(pMat != NULL);
CGeffect pEffect = pMat->getEffect ();
UInt32 uiStateVars = pMat->getStateVariables();
const std::string *vStateVarNames = pMat->getStateVarNames ();
UInt32 uiMask = 0x0001;
OSG_ASSERT(pEffect != NULL);
Matrix mObj2World = pEnv->getObjectToWorld();
std::string szTmp;
for(UInt32 i = 0; i < CgFXMaterial::NumStateVars; ++i)
{
if(uiStateVars == 0x0000)
break;
switch(uiStateVars & uiMask)
{
case CgFXMaterial::CgProjectionMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgProjection].c_str());
OSG_ASSERT(pMatrixParam != NULL);
cgGLSetMatrixParameterfc(
pMatrixParam,
pEnv->_openGLState.getProjection().getValues());
}
break;
case CgFXMaterial::CgModelViewProjectionMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgModelViewProjection].c_str());
OSG_ASSERT(pMatrixParam != NULL);
Matrix mWorld2Scrn = pEnv->getWorldToScreen();
mWorld2Scrn.mult(mObj2World);
cgGLSetMatrixParameterfc(pMatrixParam,
mWorld2Scrn.getValues());
}
break;
// -------------
// Model | World
// -------------
case CgFXMaterial::CgModelMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgModel].c_str());
OSG_ASSERT(pMatrixParam != NULL);
cgGLSetMatrixParameterfc(pMatrixParam,
mObj2World.getValues());
}
break;
case CgFXMaterial::CgModelIMask:
{
CGparameter pMatrixParam =
cgGetNamedEffectParameter(
pEffect,
vStateVarNames[
CgFXMaterial::CgModelI].c_str());
OSG_ASSERT(pMatrixParam != NULL);
Matrix mModelI = mObj2World;
mModelI.invert();
cgGLSetMatrixParameterfc(pMatrixParam,
mModelI.getValues());
}
break;
case CgFXMaterial::CgModelITMask:
{
CGparameter pMatrixParam =
//.........这里部分代码省略.........