本文整理汇总了C++中math::Matrix::LoadIdentity方法的典型用法代码示例。如果您正苦于以下问题:C++ Matrix::LoadIdentity方法的具体用法?C++ Matrix::LoadIdentity怎么用?C++ Matrix::LoadIdentity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类math::Matrix
的用法示例。
在下文中一共展示了Matrix::LoadIdentity方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Render
void Render(Gfx::CGLDevice *device, Gfx::CModelFile *modelFile)
{
device->BeginScene();
Math::Matrix persp;
Math::LoadProjectionMatrix(persp, Math::PI / 4.0f, (800.0f) / (600.0f), 0.1f, 100.0f);
device->SetTransform(Gfx::TRANSFORM_PROJECTION, persp);
Math::Matrix id;
id.LoadIdentity();
device->SetTransform(Gfx::TRANSFORM_WORLD, id);
Math::Matrix viewMat;
Math::LoadTranslationMatrix(viewMat, TRANSLATION);
Math::Matrix rot;
Math::LoadRotationXZYMatrix(rot, ROTATION);
viewMat = Math::MultiplyMatrices(viewMat, rot);
device->SetTransform(Gfx::TRANSFORM_VIEW, viewMat);
const std::vector<Gfx::ModelTriangle> &triangles = modelFile->GetTriangles();
Gfx::VertexTex2 tri[3];
for (int i = 0; i < static_cast<int>( triangles.size() ); ++i)
{
device->SetTexture(0, GetTexture(triangles[i].tex1Name));
device->SetTexture(1, GetTexture(triangles[i].tex2Name));
device->SetTextureEnabled(0, true);
device->SetTextureEnabled(1, true);
device->SetMaterial(triangles[i].material);
tri[0] = triangles[i].p1;
tri[1] = triangles[i].p2;
tri[2] = triangles[i].p3;
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, tri, 3);
}
device->EndScene();
}
示例2: Draw
void CCloud::Draw()
{
if (! m_enabled) return;
if (m_level == 0.0f) return;
if (m_lines.empty()) return;
std::vector<VertexTex2> vertices((m_brickCount+2)*2, VertexTex2());
float iDeep = m_engine->GetDeepView();
float deep = (m_brickCount*m_brickSize)/2.0f;
m_engine->SetDeepView(deep);
m_engine->SetFocus(m_engine->GetFocus());
m_engine->UpdateMatProj(); // increases the depth of view
float fogStart = deep*0.15f;
float fogEnd = deep*0.24f;
CDevice* device = m_engine->GetDevice();
// TODO: do this better?
device->SetFogParams(FOG_LINEAR, m_engine->GetFogColor( m_engine->GetRankView() ),
fogStart, fogEnd, 1.0f);
device->SetTransform(TRANSFORM_VIEW, m_engine->GetMatView());
Material material;
material.diffuse = m_diffuse;
material.ambient = m_ambient;
m_engine->SetMaterial(material);
m_engine->SetTexture(m_fileName, 0);
m_engine->SetTexture(m_fileName, 1);
m_engine->SetState(ENG_RSTATE_TTEXTURE_BLACK | ENG_RSTATE_FOG | ENG_RSTATE_WRAP);
Math::Matrix matrix;
matrix.LoadIdentity();
device->SetTransform(TRANSFORM_WORLD, matrix);
float size = m_brickSize/2.0f;
Math::Vector eye = m_engine->GetEyePt();
Math::Vector n = Math::Vector(0.0f, -1.0f, 0.0f);
// Draws all the lines
for (int i = 0; i < static_cast<int>( m_lines.size() ); i++)
{
Math::Vector pos;
pos.y = m_level;
pos.z = m_lines[i].pz;
pos.x = m_lines[i].px1;
int vertexIndex = 0;
Math::Vector p;
Math::Point uv1, uv2;
p.x = pos.x-size;
p.z = pos.z+size;
p.y = pos.y;
AdjustLevel(p, eye, deep, uv1, uv2);
vertices[vertexIndex++] = VertexTex2(p, n, uv1, uv2);
p.x = pos.x-size;
p.z = pos.z-size;
p.y = pos.y;
AdjustLevel(p, eye, deep, uv1, uv2);
vertices[vertexIndex++] = VertexTex2(p, n, uv1, uv2);
for (int j = 0; j < m_lines[i].len; j++)
{
p.x = pos.x+size;
p.z = pos.z+size;
p.y = pos.y;
AdjustLevel(p, eye, deep, uv1, uv2);
vertices[vertexIndex++] = VertexTex2(p, n, uv1, uv2);
p.x = pos.x+size;
p.z = pos.z-size;
p.y = pos.y;
AdjustLevel(p, eye, deep, uv1, uv2);
vertices[vertexIndex++] = VertexTex2(p, n, uv1, uv2);
pos.x += size*2.0f;
}
device->DrawPrimitive(PRIMITIVE_TRIANGLE_STRIP, &vertices[0], vertexIndex);
m_engine->AddStatisticTriangle(vertexIndex - 2);
}
m_engine->SetDeepView(iDeep);
m_engine->SetFocus(m_engine->GetFocus());
m_engine->UpdateMatProj(); // gives depth to initial
}
示例3: Draw
void CLightning::Draw()
{
if (!m_lightningExists) return;
if (m_phase != LP_FLASH) return;
CDevice* device = m_engine->GetDevice();
Math::Matrix mat;
mat.LoadIdentity();
device->SetTransform(TRANSFORM_WORLD, mat);
m_engine->SetTexture("effect00.png");
m_engine->SetState(ENG_RSTATE_TTEXTURE_BLACK);
Math::Point texInf;
texInf.x = 64.5f/256.0f;
texInf.y = 33.0f/256.0f;
Math::Point texSup;
texSup.x = 95.5f/256.0f;
texSup.y = 34.0f/256.0f; // blank
Math::Vector p1 = m_pos;
Math::Vector eye = m_engine->GetEyePt();
float a = Math::RotateAngle(eye.x-p1.x, eye.z-p1.z);
Math::Vector n = Math::Normalize(p1-eye);
Math::Vector corner[4];
Vertex vertex[4];
for (int i = 0; i < FLASH_SEGMENTS-1; i++)
{
Math::Vector p2 = p1;
p2.y += 8.0f+0.2f*i;
Math::Point rot;
Math::Vector p = p1;
p.x += m_width[i];
rot = Math::RotatePoint(Math::Point(p1.x, p1.z), a+Math::PI/2.0f, Math::Point(p.x, p.z));
corner[0].x = rot.x+m_shift[i].x;
corner[0].y = p1.y;
corner[0].z = rot.y+m_shift[i].y;
rot = Math::RotatePoint(Math::Point(p1.x, p1.z), a-Math::PI/2.0f, Math::Point(p.x, p.z));
corner[1].x = rot.x+m_shift[i].x;
corner[1].y = p1.y;
corner[1].z = rot.y+m_shift[i].y;
p = p2;
p.x += m_width[i+1];
rot = Math::RotatePoint(Math::Point(p2.x, p2.z), a+Math::PI/2.0f, Math::Point(p.x, p.z));
corner[2].x = rot.x+m_shift[i+1].x;
corner[2].y = p2.y;
corner[2].z = rot.y+m_shift[i+1].y;
rot = Math::RotatePoint(Math::Point(p2.x, p2.z), a-Math::PI/2.0f, Math::Point(p.x, p.z));
corner[3].x = rot.x+m_shift[i+1].x;
corner[3].y = p2.y;
corner[3].z = rot.y+m_shift[i+1].y;
if (p2.y < p1.y)
{
vertex[0] = Vertex(corner[1], n, Math::Point(texSup.x, texSup.y));
vertex[1] = Vertex(corner[0], n, Math::Point(texInf.x, texSup.y));
vertex[2] = Vertex(corner[3], n, Math::Point(texSup.x, texInf.y));
vertex[3] = Vertex(corner[2], n, Math::Point(texInf.x, texInf.y));
}
else
{
vertex[0] = Vertex(corner[0], n, Math::Point(texSup.x, texSup.y));
vertex[1] = Vertex(corner[1], n, Math::Point(texInf.x, texSup.y));
vertex[2] = Vertex(corner[2], n, Math::Point(texSup.x, texInf.y));
vertex[3] = Vertex(corner[3], n, Math::Point(texInf.x, texInf.y));
}
device->DrawPrimitive(PRIMITIVE_TRIANGLE_STRIP, vertex, 4);
m_engine->AddStatisticTriangle(2);
p1 = p2;
}
}
示例4: Render
void Render(Gfx::CGLDevice *device)
{
device->BeginScene();
/* Unlit part of scene */
device->SetRenderState(Gfx::RENDER_STATE_LIGHTING, false);
device->SetRenderState(Gfx::RENDER_STATE_CULLING, false); // Double-sided drawing
Math::Matrix persp;
Math::LoadProjectionMatrix(persp, Math::PI / 4.0f, (800.0f) / (600.0f), 0.1f, 50.0f);
device->SetTransform(Gfx::TRANSFORM_PROJECTION, persp);
Math::Matrix viewMat;
Math::Matrix mat;
viewMat.LoadIdentity();
Math::LoadRotationXMatrix(mat, -ROTATION.x);
viewMat = Math::MultiplyMatrices(viewMat, mat);
Math::LoadRotationYMatrix(mat, -ROTATION.y);
viewMat = Math::MultiplyMatrices(viewMat, mat);
Math::LoadTranslationMatrix(mat, -TRANSLATION);
viewMat = Math::MultiplyMatrices(viewMat, mat);
device->SetTransform(Gfx::TRANSFORM_VIEW, viewMat);
Math::Matrix worldMat;
worldMat.LoadIdentity();
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
Gfx::VertexCol line[2] = {};
for (int x = -40; x <= 40; ++x)
{
line[0].color = Gfx::Color(0.7f + x / 120.0f, 0.0f, 0.0f);
line[0].coord.z = -40;
line[0].coord.x = x;
line[1].color = Gfx::Color(0.7f + x / 120.0f, 0.0f, 0.0f);
line[1].coord.z = 40;
line[1].coord.x = x;
device->DrawPrimitive(Gfx::PRIMITIVE_LINES, line, 2);
}
for (int z = -40; z <= 40; ++z)
{
line[0].color = Gfx::Color(0.0f, 0.7f + z / 120.0f, 0.0f);
line[0].coord.z = z;
line[0].coord.x = -40;
line[1].color = Gfx::Color(0.0f, 0.7f + z / 120.0f, 0.0f);
line[1].coord.z = z;
line[1].coord.x = 40;
device->DrawPrimitive(Gfx::PRIMITIVE_LINES, line, 2);
}
Gfx::VertexCol quad[6] = {};
quad[0].coord = Math::Vector(-1.0f, -1.0f, 0.0f);
quad[1].coord = Math::Vector( 1.0f, -1.0f, 0.0f);
quad[2].coord = Math::Vector(-1.0f, 1.0f, 0.0f);
quad[3].coord = Math::Vector( 1.0f, 1.0f, 0.0f);
for (int i = 0; i < 6; ++i)
quad[i].color = Gfx::Color(1.0f, 1.0f, 0.0f);
Math::LoadTranslationMatrix(worldMat, Math::Vector(40.0f, 2.0f, 40.0f));
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLE_STRIP, quad, 4);
for (int i = 0; i < 6; ++i)
quad[i].color = Gfx::Color(0.0f, 1.0f, 1.0f);
Math::LoadTranslationMatrix(worldMat, Math::Vector(-40.0f, 2.0f, -40.0f));
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
int planes = device->ComputeSphereVisibility(Math::Vector(0.0f, 0.0f, 0.0f), 1.0f);
printf("Planes:");
if (planes == 0)
printf(" (none)");
if (planes & Gfx::FRUSTUM_PLANE_LEFT)
printf(" LEFT");
if (planes & Gfx::FRUSTUM_PLANE_RIGHT)
printf(" RIGHT");
if (planes & Gfx::FRUSTUM_PLANE_BOTTOM)
printf(" BOTTOM");
if (planes & Gfx::FRUSTUM_PLANE_TOP)
printf(" TOP");
if (planes & Gfx::FRUSTUM_PLANE_FRONT)
printf(" FRONT");
//.........这里部分代码省略.........
示例5: Render
void Render(Gfx::CGLDevice *device)
{
device->BeginScene();
Math::Matrix persp;
Math::LoadProjectionMatrix(persp, Math::PI / 4.0f, (800.0f) / (600.0f), 0.1f, 100.0f);
device->SetTransform(Gfx::TRANSFORM_PROJECTION, persp);
Math::Matrix viewMat;
Math::Matrix mat;
viewMat.LoadIdentity();
Math::LoadRotationXMatrix(mat, -ROTATION.x);
viewMat = Math::MultiplyMatrices(viewMat, mat);
Math::LoadRotationYMatrix(mat, -ROTATION.y);
viewMat = Math::MultiplyMatrices(viewMat, mat);
Math::LoadTranslationMatrix(mat, -TRANSLATION);
viewMat = Math::MultiplyMatrices(viewMat, mat);
device->SetTransform(Gfx::TRANSFORM_VIEW, viewMat);
Math::Matrix worldMat;
worldMat.LoadIdentity();
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
Gfx::VertexCol line[2] = { Gfx::VertexCol() };
for (int x = -40; x <= 40; ++x)
{
line[0].color = Gfx::Color(0.7f + x / 120.0f, 0.0f, 0.0f);
line[0].coord.z = -40;
line[0].coord.x = x;
line[1].color = Gfx::Color(0.7f + x / 120.0f, 0.0f, 0.0f);
line[1].coord.z = 40;
line[1].coord.x = x;
device->DrawPrimitive(Gfx::PRIMITIVE_LINES, line, 2);
}
for (int z = -40; z <= 40; ++z)
{
line[0].color = Gfx::Color(0.0f, 0.7f + z / 120.0f, 0.0f);
line[0].coord.z = z;
line[0].coord.x = -40;
line[1].color = Gfx::Color(0.0f, 0.7f + z / 120.0f, 0.0f);
line[1].coord.z = z;
line[1].coord.x = 40;
device->DrawPrimitive(Gfx::PRIMITIVE_LINES, line, 2);
}
Gfx::VertexCol quad[6] = { Gfx::VertexCol() };
for (int i = 0; i < 6; ++i)
quad[i].color = Gfx::Color(1.0f, 1.0f, 0.0f);
quad[0].coord = Math::Vector(-1.0f, -1.0f, 0.0f);
quad[1].coord = Math::Vector( 1.0f, -1.0f, 0.0f);
quad[2].coord = Math::Vector( 1.0f, 1.0f, 0.0f);
quad[3].coord = Math::Vector( 1.0f, 1.0f, 0.0f);
quad[4].coord = Math::Vector(-1.0f, 1.0f, 0.0f);
quad[5].coord = Math::Vector(-1.0f, -1.0f, 0.0f);
Math::LoadTranslationMatrix(worldMat, Math::Vector(40.0f, 2.0f, 40.0f));
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, quad, 6);
for (int i = 0; i < 6; ++i)
quad[i].color = Gfx::Color(0.0f, 1.0f, 1.0f);
Math::LoadTranslationMatrix(worldMat, Math::Vector(-40.0f, 2.0f, -40.0f));
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, quad, 6);
for (int i = 0; i < 6; ++i)
quad[i].color = Gfx::Color(1.0f, 0.0f, 1.0f);
Math::LoadTranslationMatrix(worldMat, Math::Vector(0.0f, 10.0f, 0.0f));
device->SetTransform(Gfx::TRANSFORM_WORLD, worldMat);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, quad, 6);
device->EndScene();
}
示例6: Render
void Render(Gfx::CGLDevice *device)
{
device->BeginScene();
Math::Matrix ortho;
Math::LoadOrthoProjectionMatrix(ortho, -10, 10, -10, 10);
device->SetTransform(Gfx::TRANSFORM_PROJECTION, ortho);
Math::Matrix id;
id.LoadIdentity();
device->SetTransform(Gfx::TRANSFORM_WORLD, id);
device->SetTransform(Gfx::TRANSFORM_VIEW, id);
static Gfx::VertexTex2 quad[] =
{
Gfx::VertexTex2(Math::Vector(-2.0f, 2.0f, 0.0f), Math::Vector(), Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f)),
Gfx::VertexTex2(Math::Vector( 2.0f, 2.0f, 0.0f), Math::Vector(), Math::Point(1.0f, 0.0f), Math::Point(1.0f, 0.0f)),
Gfx::VertexTex2(Math::Vector( 2.0f, -2.0f, 0.0f), Math::Vector(), Math::Point(1.0f, 1.0f), Math::Point(1.0f, 1.0f)),
Gfx::VertexTex2(Math::Vector( 2.0f, -2.0f, 0.0f), Math::Vector(), Math::Point(1.0f, 1.0f), Math::Point(1.0f, 1.0f)),
Gfx::VertexTex2(Math::Vector(-2.0f, -2.0f, 0.0f), Math::Vector(), Math::Point(0.0f, 1.0f), Math::Point(0.0f, 1.0f)),
Gfx::VertexTex2(Math::Vector(-2.0f, 2.0f, 0.0f), Math::Vector(), Math::Point(0.0f, 0.0f), Math::Point(0.0f, 0.0f)),
};
Gfx::TextureStageParams tex1StageParams;
tex1StageParams.colorOperation = Gfx::TEX_MIX_OPER_DEFAULT;
tex1StageParams.alphaOperation = Gfx::TEX_MIX_OPER_DEFAULT;
device->SetTextureStageParams(0, tex1StageParams);
Gfx::TextureStageParams tex2StageParams;
tex2StageParams.colorOperation = Gfx::TEX_MIX_OPER_DEFAULT;
tex2StageParams.alphaOperation = Gfx::TEX_MIX_OPER_DEFAULT;
device->SetTextureStageParams(1, tex2StageParams);
Math::Matrix t;
Math::LoadTranslationMatrix(t, Math::Vector(-4.0f, 4.0f, 0.0f));
device->SetTransform(Gfx::TRANSFORM_VIEW, t);
device->SetTextureEnabled(0, true);
device->SetTextureEnabled(1, false);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, quad, 6);
Math::LoadTranslationMatrix(t, Math::Vector( 4.0f, 4.0f, 0.0f));
device->SetTransform(Gfx::TRANSFORM_VIEW, t);
device->SetTextureEnabled(0, false);
device->SetTextureEnabled(1, true);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, quad, 6);
Math::LoadTranslationMatrix(t, Math::Vector( 0.0f, -4.0f, 0.0f));
device->SetTransform(Gfx::TRANSFORM_VIEW, t);
device->SetTextureEnabled(0, true);
device->SetTextureEnabled(1, true);
tex1StageParams.colorOperation = Gfx::TEX_MIX_OPER_DEFAULT;
tex1StageParams.alphaOperation = Gfx::TEX_MIX_OPER_DEFAULT;
device->SetTextureStageParams(0, tex1StageParams);
tex2StageParams.colorOperation = Gfx::TEX_MIX_OPER_ADD;
tex2StageParams.colorArg1 = Gfx::TEX_MIX_ARG_COMPUTED_COLOR;
tex2StageParams.colorArg2 = Gfx::TEX_MIX_ARG_TEXTURE;
tex2StageParams.alphaOperation = Gfx::TEX_MIX_OPER_DEFAULT;
device->SetTextureStageParams(1, tex2StageParams);
device->DrawPrimitive(Gfx::PRIMITIVE_TRIANGLES, quad, 6);
device->EndScene();
}