本文整理汇总了C++中Transform::GetCurrentMatrix方法的典型用法代码示例。如果您正苦于以下问题:C++ Transform::GetCurrentMatrix方法的具体用法?C++ Transform::GetCurrentMatrix怎么用?C++ Transform::GetCurrentMatrix使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transform
的用法示例。
在下文中一共展示了Transform::GetCurrentMatrix方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DrawGeometry
void DrawGeometry(bool shadowPass)
{
CMatrix44 rot;
rot.Rotate(45,1,0,0);
transform.Push();
if(shadowPass == false)
shadow_transform.Push();
transforms.mvp = transforms.proj * transform.GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
if(shadowPass == false)
program.SetMtx44(uShadowMtx, shadow_transform.GetCurrentMatrix().data);
//Plane
WRender::BindVertexArrayObject(vaoPlane);
WRender::DrawArray(WRender::TRIANGLES, 4*3, 0);
transform.Pop();
if(shadowPass == false)
shadow_transform.Pop();
transform.Push();
if(shadowPass == false)
shadow_transform.Push();
transform.ApplyTransform(rot);
transform.Translate(0, 5.0f, 0);
if(shadowPass == false)
{
shadow_transform.ApplyTransform(rot);
shadow_transform.Translate(0, 5.0f, 0);
}
transforms.mvp = transforms.proj * transform.GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
if(shadowPass == false)
program.SetMtx44(uShadowMtx, shadow_transform.GetCurrentMatrix().data);
//Torus
WRender::BindVertexArrayObject(vaoTorus);
WRender::DrawArray(WRender::TRIANGLES, nTorusVertices, 0);
transform.Pop();
if(shadowPass == false)
shadow_transform.Pop();
}
示例2: MainLoop
void MainLoop(CPlatform * const pPlatform)
{
//update the main application
pPlatform->Tick();
WRender::ClearScreenBuffer(COLOR_BIT | DEPTH_BIT); //not really needed
WRender::EnableDepthTest(true);
transform.Push();
{
CMatrix44 rotLat,rotLong;
rotLat.Rotate(latitude, 1, 0, 0);
rotLong.Rotate(longitude, 0, 1, 0);
transform.Translate(cameraPosition);
transform.ApplyTransform(rotLat);
transform.ApplyTransform(rotLong);
transform.Push();
{
transforms.mvp = transforms.proj * transform.GetCurrentMatrix();
//program.SetMtx44(uMVP, transforms.mvp.data);
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
program[0].Start();
WRender::Draw(WRender::LINES, WRender::U_BYTE, sizeof(indices)/sizeof(unsigned char), 0);
WRender::Draw(WRender::POINTS, WRender::U_BYTE, 1, 5);
program[1].Start();
WRender::Draw(WRender::LINES, WRender::U_BYTE, sizeof(indices)/sizeof(unsigned char), 0);
WRender::Draw(WRender::POINTS, WRender::U_BYTE, 1, 5);
}
transform.Pop();
}
transform.Pop();
pPlatform->UpdateBuffers();
if(pPlatform->GetKeyboard().keys[KB_UP].IsPressed())
latitude += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_DOWN].IsPressed())
latitude -= 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_LEFT].IsPressed())
longitude += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_RIGHT].IsPressed())
longitude -= 90.0f * pPlatform->GetDT();
}
示例3: MainLoop
void MainLoop(CPlatform * const pPlatform)
{
float tranD[3] = {0.0f, -1.0f, 0};
//update the main application
pPlatform->Tick();
WRender::ClearScreenBuffer(COLOR_BIT | DEPTH_BIT);
WRender::EnableDepthTest(true);
program.Start();
//Draw from light perspective
//glPolygonOffset( 2.5f, 25.0f );
//glEnable( GL_POLYGON_OFFSET_FILL);
transform.Push();
{
WRender::SetupViewport(0, 0, TEX_DIMENSIONS, TEX_DIMENSIONS); //adjust viewport
WRender::BindFrameBuffer(WRender::FrameBuffer::DRAW, fbo); //set fbo
WRender::ClearScreenBuffer(COLOR_BIT | DEPTH_BIT); //clear draw buffers (must be called after we set the fbo)
rotLat.Identity(); rotLat.Rotate(lightLatitude, 1, 0, 0);
rotLong.Identity(); rotLong.Rotate(lightLongitude, 0, 1, 0);
transform.Translate(cameraPosition);
transform.ApplyTransform(rotLat);
transform.ApplyTransform(rotLong);
//setup shadow mvp
shadow_transform.Identity();
shadow_transform.Translate(0.5f, 0.5f, 0.5f);
shadow_transform.Scale(0.5f,0.5f,0.5f);
shadow_transform.ApplyTransform(transforms.proj);
shadow_transform.ApplyTransform(transform.GetCurrentMatrix());
DrawGeometry(true);
WRender::UnbindFrameBuffer(WRender::FrameBuffer::DRAW); //reset draw buffer
WRender::SetupViewport(0, 0, 640, 640); //reset viewport
}
//glDisable( GL_POLYGON_OFFSET_FILL);
transform.Pop();
//draw scene
transform.Push();
{
rotLat.Identity(); rotLat.Rotate(latitude, 1, 0, 0);
rotLong.Identity(); rotLong.Rotate(longitude, 0, 1, 0);
transform.Translate(cameraPosition);
transform.ApplyTransform(rotLat);
transform.ApplyTransform(rotLong);
DrawGeometry(false);
}
transform.Pop();
//render depth texture to screen
textureShader.Start();
WRender::BindVertexArrayObject(sqVao);
textureShader.SetVec3("translate",tranD);
WRender::Draw(WRender::TRIANGLE_STRIP, WRender::U_BYTE, sizeof(sqIndices)/sizeof(unsigned char), 0);
//update Keyboard
pPlatform->UpdateBuffers();
if(!pPlatform->GetKeyboard().keys[KB_LEFTSHIFT].IsPressed())
{ pLat = &latitude; pLong = &longitude;}
else
{ pLat = &lightLatitude; pLong = &lightLongitude;}
if(pPlatform->GetKeyboard().keys[KB_UP].IsPressed())
*pLat += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_DOWN].IsPressed())
*pLat -= 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_LEFT].IsPressed())//l
*pLong += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_RIGHT].IsPressed())//r
*pLong -= 90.0f * pPlatform->GetDT();
}
示例4: MainLoop
void MainLoop(CPlatform * const pPlatform)
{ //update the main application
CVec3df cameraPosition( 0.0f, 0.0f, distance );
pPlatform->Tick();
WRender::ClearScreenBuffer(COLOR_BIT | DEPTH_BIT);
WRender::EnableDepthTest(true);
WRender::ActiveTexture(WRender::Texture::UNIT_0);
WRender::BindTexture(cubemap_tex);
transform.Push();
{
CMatrix44 rotLat,rotLong,inverse_camera, model_matrix;
rotLat.Rotate(latitude, 1, 0, 0);
rotLong.Rotate(longitude, 0, 1, 0);
transform.Translate(cameraPosition);
transform.ApplyTransform(rotLat);
transform.ApplyTransform(rotLong);
transform.Push();
{
transform.Scale(10.0f,10.0f,10.0f);
transforms.mv = transform.GetCurrentMatrix();
transforms.mvp = transforms.proj * transforms.mv;
CMatrix33 normal;
normal = transforms.mv;
normal = normal.Invert();
normal = normal.Transpose();
transforms.nrm[ 0] = normal.x.x; transforms.nrm[ 1] = normal.x.y; transforms.nrm[ 2] = normal.x.z;
transforms.nrm[ 4] = normal.y.x; transforms.nrm[ 5] = normal.y.y; transforms.nrm[ 6] = normal.y.z;
transforms.nrm[ 8] = normal.z.x; transforms.nrm[ 9] = normal.z.y; transforms.nrm[10] = normal.z.z;
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
WRender::EnableCulling(true);
WRender::CullMode(WRender::FRONT_FACE);
program_cube.Start();
DrawShape(box);
}
transform.Pop();
transform.Push();
{
transform.Translate(0.0f, 0, 0);
transforms.mv = transform.GetCurrentMatrix();
transforms.mvp = transforms.proj * transforms.mv;
CMatrix33 normal;
normal = transforms.mv;
normal = normal.Invert();
normal = normal.Transpose();
transforms.nrm[ 0] = normal.x.x; transforms.nrm[ 1] = normal.x.y; transforms.nrm[ 2] = normal.x.z;
transforms.nrm[ 4] = normal.y.x; transforms.nrm[ 5] = normal.y.y; transforms.nrm[ 6] = normal.y.z;
transforms.nrm[ 8] = normal.z.x; transforms.nrm[ 9] = normal.z.y; transforms.nrm[10] = normal.z.z;
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
WRender::EnableCulling(true);
WRender::CullMode(WRender::BACK_FACE);
program_cube.Start();
DrawShape(sphere);
}
transform.Pop();
}
transform.Pop();
pPlatform->UpdateBuffers();
if (pPlatform->GetKeyboard().keys[KB_LEFTSHIFT].IsPressed()){
if(pPlatform->GetKeyboard().keys[KB_UP].IsPressed())
distance += 1.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_DOWN].IsPressed())
distance -= 1.0f * pPlatform->GetDT();
}else{
if(pPlatform->GetKeyboard().keys[KB_UP].IsPressed())
latitude += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_DOWN].IsPressed())
latitude -= 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_LEFT].IsPressed())//l
longitude += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_RIGHT].IsPressed())//r
longitude -= 90.0f * pPlatform->GetDT();
}
}
示例5: MainLoop
void MainLoop(CPlatform * const pPlatform)
{ //update the main application
CVec3df cameraPosition(0, 0.0f, -2.1f);
pPlatform->Tick();
if(pPlatform->GetKeyboard().keys[KB_B].IsToggledPress())
{
brightness += 0.1f;
if(brightness > 1.0)
brightness = -1.0f;
printf("brightness : %f", brightness);
}
if(pPlatform->GetKeyboard().keys[KB_G].IsToggledPress())
{
gamma += 0.2f;
if(gamma > 4.0)
gamma = 0.2f;
printf("gamma : %f", gamma);
}
if(pPlatform->GetKeyboard().keys[KB_C].IsToggledPress())
{
contrast += 0.1f;
if(contrast > 2.0)
contrast = -1.0f;
printf("contrast : %f", contrast);
}
//first pass to texture
program[0].Start();
WRender::SetClearColour(0.0,0,0,0);
WRender::BindFrameBuffer(WRender::FrameBuffer::DRAW, fbo);
WRender::SetupViewport(0, 0, WIDTH_HEIGHT, WIDTH_HEIGHT);
WRender::ClearScreenBuffer(COLOR_BIT | DEPTH_BIT);
WRender::EnableDepthTest(true);
transform.Push();
{
CMatrix44 rotLat,rotLong;
rotLat.Rotate(latitude, 1, 0, 0);
rotLong.Rotate(longitude, 0, 1, 0);
transform.Translate(cameraPosition);
transform.ApplyTransform(rotLat);
transform.ApplyTransform(rotLong);
transform.Push();
{
transforms.mvp = transforms.proj * transform.GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
//Sphere
WRender::BindVertexArrayObject(vaoSphere);
WRender::DrawArray(WRender::TRIANGLES, nSphereVertices, 0);
}
transform.Pop();
}
transform.Pop();
WRender::UnbindFrameBuffer(WRender::FrameBuffer::DRAW);
WRender::SetDrawBuffer(WRender::DB_BACK);
//second pass
//texture to screen
WRender::SetClearColour(1.0,0,0,0);
WRender::SetupViewport(0, 0, 640, 640);
WRender::ClearScreenBuffer(COLOR_BIT | DEPTH_BIT);
WRender::BindVertexArrayObject(sqVao);
program[1].Start();
if(pPlatform->GetKeyboard().keys[KB_SPACE].IsPressed())
{
program[1].SetFloat("brightness", 0.0f);
program[1].SetFloat("inverse_gamma", 1.0f);
program[1].SetFloat("contrast", 1.0f);
}
else
{
program[1].SetFloat("brightness",brightness);
program[1].SetFloat("inverse_gamma",1.0f/gamma);
program[1].SetFloat("contrast",contrast);
}
//float tranR[3] = {0.0f, -1.0f, 0};
WRender::BindTexture(texR,WRender::Texture::UNIT_0);
//program[1].SetVec3("translate",tranR);
WRender::Draw(WRender::TRIANGLE_STRIP, WRender::U_BYTE, sizeof(sqIndices)/sizeof(unsigned char), 0);
pPlatform->UpdateBuffers();
if(pPlatform->GetKeyboard().keys[KB_UP].IsPressed())
latitude += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_DOWN].IsPressed())
latitude -= 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_LEFT].IsPressed())//l
longitude += 90.0f * pPlatform->GetDT();
if(pPlatform->GetKeyboard().keys[KB_RIGHT].IsPressed())//r
longitude -= 90.0f * pPlatform->GetDT();
}
示例6: DrawGeometry
void DrawGeometry(bool shadowPass)
{
CMatrix44 rot;
rot.Rotate(45,1,0,0);
#ifdef ANIM_TORUS
static float angle = 0;
CMatrix44 anim;
anim.Rotate(angle,0,1,0);
angle += 0.1f;
#endif
transform.Push();
if(shadowPass == false)
for(unsigned int i=0;i<NUM_SHADOWS; i++)
shadow_transform[i].Push();
transforms.mvp = transforms.proj * transform.GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
if(shadowPass == false)
{
for(unsigned int i=0;i<NUM_SHADOWS; i++)
shadowMtx[i] = shadow_transform[i].GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, shadowUBO, sizeof(CMatrix44)*NUM_SHADOWS, (void*)shadowMtx, 0);
//WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, shadowUBO, sizeof(CMatrix44)*NUM_SHADOWS, (void*)shadowMtx, sizeof(CMatrix44));
}
//Plane
WRender::BindVertexArrayObject(vaoPlane);
WRender::DrawArray(WRender::TRIANGLES, 4*3, 0);
transform.Pop();
if(shadowPass == false)
for(unsigned int i=0;i<NUM_SHADOWS; i++)
shadow_transform[i].Pop();
transform.Push();
if(shadowPass == false)
for(unsigned int i=0;i<NUM_SHADOWS; i++)
shadow_transform[i].Push();
#ifdef ANIM_TORUS
transform.ApplyTransform(anim);
#endif
transform.Translate(0, 3.0f, 5.0f);
transform.ApplyTransform(rot);
if(shadowPass == false)
{
for(unsigned int i=0;i<NUM_SHADOWS; i++)
{
#ifdef ANIM_TORUS
shadow_transform[i].ApplyTransform(anim);
#endif
shadow_transform[i].Translate(0, 3.0f, 5.0f);
shadow_transform[i].ApplyTransform(rot);
}
}
transforms.mvp = transforms.proj * transform.GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, ubo, sizeof(Transforms), (void*)&transforms, 0);
if(shadowPass == false)
{
for(unsigned int i=0;i<NUM_SHADOWS; i++)
shadowMtx[i] = shadow_transform[i].GetCurrentMatrix();
WRender::UpdateBuffer(WRender::UNIFORM, WRender::DYNAMIC, shadowUBO, sizeof(CMatrix44)*NUM_SHADOWS, (void*)shadowMtx, sizeof(CMatrix44));
}
//Torus
WRender::BindVertexArrayObject(vaoTorus);
WRender::DrawArray(WRender::TRIANGLES, nTorusVertices, 0);
transform.Pop();
if(shadowPass == false)
{
for(unsigned int i=0;i<NUM_SHADOWS; i++)
shadow_transform[i].Pop();
}
}