本文整理汇总了C++中TransformComponent::getWorldMatrix方法的典型用法代码示例。如果您正苦于以下问题:C++ TransformComponent::getWorldMatrix方法的具体用法?C++ TransformComponent::getWorldMatrix怎么用?C++ TransformComponent::getWorldMatrix使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TransformComponent
的用法示例。
在下文中一共展示了TransformComponent::getWorldMatrix方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: onRender
void FullbrightMaterialComponent::onRender()
{
if(!hasModelData()) {
return;
}
const CameraComponent &cam = getOwner().getCameraManager().getCurrentCamera();
//const TransformComponent *camTransform = cam.getOwner()->getComponent<TransformComponent>();
TransformComponent *transform = getOwner().getComponent<TransformComponent>();
assert(transform);
CaffMath::Matrix44 worldMat = transform->getWorldMatrix();
glm::mat4 wMat;
memcpy(&wMat[0][0], &worldMat._11, sizeof(float) * 16);
// const glm::mat4 pMat = cam.getProjMatrix();
//
// CaffMath::Matrix44 viewMat = camTransform->getWorldMatrix();
// glm::mat4 vMat;
// const glm::mat4 vMat2 = cam.getViewMatrix();
//
// memcpy(&vMat[0][0], &viewMat._11, sizeof(float) * 16);
//
// //vMat = vMat._inverse();
// vMat = vMat2;
const glm::mat4 wvpMat = cam.getViewProjMatrix() * wMat;
CaffApp::Renderer &renderer = getOwner().getRenderer();
renderer.reset();
renderer.setShader(fullBrightShaderID);
renderer.setVertexFormat(fullBrightVertexID);
renderer.setTexture("diffuseTex", m_diffuseMapID);
renderer.setShader2f("texScale", &m_diffuseScale.x);
renderer.setShaderMatrix44f("wvpMat", &wvpMat[0][0]);
renderer.setShader4f("color", &m_rgba.x);
for(std::size_t i = 0; i < getModelData()->model->getNumberOfMeshes(); ++i)
{
renderer.setVertexBuffer(getModelData()->vertBufferIDs.at(i));
if(getModelData()->indexBufferIDs.size() < i)
{
renderer.setIndexBuffer(getModelData()->indexBufferIDs.at(i));
}
renderer.apply();
renderer.drawArray(CaffApp::Primitive::TRIANGLES, 0, getModelData()->model->getMesh(i).getGLFaces());
}
}