本文整理汇总了C++中graphics::Renderer类的典型用法代码示例。如果您正苦于以下问题:C++ Renderer类的具体用法?C++ Renderer怎么用?C++ Renderer使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Renderer类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Draw
void Context::Draw()
{
Graphics::Renderer *r = GetRenderer();
// Ticket for the viewport mostly
Graphics::Renderer::StateTicket ticket(r);
r->SetViewport(0, 0, m_width, m_height);
// reset renderer for each layer
for (std::vector<Layer*>::iterator i = m_layers.begin(); i != m_layers.end(); ++i) {
r->SetOrthographicProjection(0, m_width, m_height, 0, -1, 1);
r->SetTransform(matrix4x4f::Identity());
r->SetClearColor(Color4f::BLACK);
DrawWidget(*i);
r->SetScissor(false);
}
if (m_mousePointer && m_mousePointerEnabled) {
r->SetOrthographicProjection(0, m_width, m_height, 0, -1, 1);
r->SetTransform(matrix4x4f::Identity());
r->SetClearColor(Color4f::BLACK);
DrawWidget(m_mousePointer);
r->SetScissor(false);
}
}
开发者ID:lwho,项目名称:pioneer,代码行数:27,代码来源:Context.cpp
示例2: GetRenderer
void Label3D::Render(const matrix4x4f &trans, const RenderData *rd)
{
//needs alpha test
Graphics::Renderer *r = GetRenderer();
r->SetTransform(trans);
r->DrawTriangles(m_geometry.Get(), m_material.Get());
}
开发者ID:Loki999,项目名称:pioneer,代码行数:7,代码来源:Label3D.cpp
示例3: Render
void Billboard::Render(const matrix4x4f &trans, const RenderData *rd)
{
Graphics::Renderer *r = GetRenderer();
Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_UV0, 6);
const matrix3x3f rot = trans.GetOrient().Transpose();
//some hand-tweaked scaling, to make the lights seem larger from distance
const float size = m_size * Graphics::GetFovFactor() * Clamp(trans.GetTranslate().Length() / 500.f, 0.25f, 15.f);
const vector3f rotv1 = rot * vector3f(size/2.f, -size/2.f, 0.0f);
const vector3f rotv2 = rot * vector3f(size/2.f, size/2.f, 0.0f);
va.Add(m_offset-rotv1, vector2f(0.f, 0.f)); //top left
va.Add(m_offset-rotv2, vector2f(0.f, 1.f)); //bottom left
va.Add(m_offset+rotv2, vector2f(1.f, 0.f)); //top right
va.Add(m_offset+rotv2, vector2f(1.f, 0.f)); //top right
va.Add(m_offset-rotv2, vector2f(0.f, 1.f)); //bottom left
va.Add(m_offset+rotv1, vector2f(1.f, 1.f)); //bottom right
r->SetTransform(trans);
r->DrawTriangles(&va, m_renderState, m_material.Get());
}
开发者ID:AmesianX,项目名称:pioneer,代码行数:25,代码来源:Billboard.cpp
示例4: Draw
void Face::Draw()
{
const Point &offset = GetActiveOffset();
const Point &area = GetActiveArea();
const float x = offset.x;
const float y = offset.y;
const float sx = area.x;
const float sy = area.y;
const vector2f texSize = m_texture->GetDescriptor().texSize;
Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_UV0);
va.Add(vector3f(x, y, 0.0f), vector2f(0.0f, 0.0f));
va.Add(vector3f(x, y+sy, 0.0f), vector2f(0.0f, texSize.y));
va.Add(vector3f(x+sx, y, 0.0f), vector2f(texSize.x, 0.0f));
va.Add(vector3f(x+sx, y+sy, 0.0f), vector2f(texSize.x, texSize.y));
Graphics::Renderer *r = GetContext()->GetRenderer();
s_material->texture0 = m_texture.get();
auto state = GetContext()->GetSkin().GetAlphaBlendState();
r->DrawTriangles(&va, state, s_material.Get(), Graphics::TRIANGLE_STRIP);
Single::Draw();
}
开发者ID:ZeframCochrane,项目名称:pioneer,代码行数:25,代码来源:Face.cpp
示例5: Draw
void VScrollPortal::Draw()
{
PROFILE_SCOPED()
SetScissor(true);
float size[2];
GetSize(size);
m_scrollY = vscrollAdjust.GetValue();
float toScroll = m_childSizeY - size[1];
if (toScroll < 0) toScroll = 0;
float scale[2];
Screen::GetCoords2Pixels(scale);
Graphics::Renderer *r = Gui::Screen::GetRenderer();
Graphics::Renderer::MatrixTicket ticket(r, Graphics::MatrixMode::MODELVIEW);
// scroll to whole pixel locations whatever the resolution
r->Translate(0, floor((-m_scrollY*toScroll)/scale[1])*scale[1], 0);
Container::Draw();
SetScissor(false);
}
开发者ID:Action-Committee,项目名称:pioneer,代码行数:25,代码来源:GuiVScrollPortal.cpp
示例6: LeaveOrtho
void Screen::LeaveOrtho()
{
PROFILE_SCOPED()
Graphics::Renderer *r = GetRenderer();
r->SetProjection(projMatrix);
r->SetTransform(modelMatrix);
}
开发者ID:Action-Committee,项目名称:pioneer,代码行数:9,代码来源:GuiScreen.cpp
示例7: Draw
void Image::Draw()
{
float allocSize[2];
GetSize(allocSize);
Graphics::Renderer *r = Gui::Screen::GetRenderer();
r->SetBlendMode(Graphics::BLEND_ALPHA);
m_quad->Draw(r, 0, vector2f(allocSize[0],allocSize[1]), m_color);
}
开发者ID:AaronSenese,项目名称:pioneer,代码行数:9,代码来源:GuiImage.cpp
示例8: Render
void StaticGeometry::Render(const std::vector<matrix4x4f> &trans, const RenderData *rd)
{
PROFILE_SCOPED()
SDL_assert(m_renderState);
Graphics::Renderer *r = GetRenderer();
const size_t numTrans = trans.size();
if (!m_instBuffer.Valid() || (numTrans > m_instBuffer->GetSize()))
{
// create the InstanceBuffer with the maximum number of transformations we might use within it.
m_instBuffer.Reset( r->CreateInstanceBuffer(numTrans, Graphics::BUFFER_USAGE_DYNAMIC) );
}
// Update the InstanceBuffer data
for(Uint32 i=0; i<numTrans; i++) {
Graphics::InstanceBuffer* ib = m_instBuffer.Get();
matrix4x4f *pBuffer = ib->Map(Graphics::BUFFER_MAP_WRITE);
// Copy the transforms into the buffer
for(auto mt : trans) {
(*pBuffer) = mt;
++pBuffer;
}
ib->Unmap();
ib->SetInstanceCount(numTrans);
}
// we'll set the transformation within the vertex shader so identity the global one
r->SetTransform(matrix4x4f::Identity());
// process each mesh
for (auto& it : m_meshes) {
// Due to the shader needing to change we have to get the material and force it to the instanced variant
Graphics::MaterialDescriptor mdesc = it.material->GetDescriptor();
mdesc.instanced = true;
// create the "new" material with the instanced description
RefCountedPtr<Graphics::Material> mat(r->CreateMaterial(mdesc));
// copy over all of the other details
mat->texture0 = it.material->texture0;
mat->texture1 = it.material->texture1;
mat->texture2 = it.material->texture2;
mat->texture3 = it.material->texture3;
mat->texture4 = it.material->texture4;
mat->texture5 = it.material->texture5;
mat->texture6 = it.material->texture5;
mat->heatGradient = it.material->heatGradient;
mat->diffuse = it.material->diffuse;
mat->specular = it.material->specular;
mat->emissive = it.material->emissive;
mat->shininess = it.material->shininess;
mat->specialParameter0 = it.material->specialParameter0;
// finally render using the instance material
r->DrawBufferIndexedInstanced(it.vertexBuffer.Get(), it.indexBuffer.Get(), m_renderState, mat.Get(), m_instBuffer.Get());
}
}
开发者ID:Ash-Bash,项目名称:pioneer-horizons,代码行数:54,代码来源:StaticGeometry.cpp
示例9: Render
void StaticGeometry::Render(const matrix4x4f &trans, const RenderData *rd)
{
PROFILE_SCOPED()
SDL_assert(m_renderState);
Graphics::Renderer *r = GetRenderer();
r->SetTransform(trans);
for (auto& it : m_meshes)
r->DrawBufferIndexed(it.vertexBuffer.Get(), it.indexBuffer.Get(), m_renderState, it.material.Get());
//DrawBoundingBox(m_boundingBox);
}
开发者ID:lwho,项目名称:pioneer,代码行数:11,代码来源:StaticGeometry.cpp
示例10: Draw
void ModelSpinner::Draw()
{
Graphics::Renderer *r = GetContext()->GetRenderer();
Graphics::Renderer::StateTicket ticket(r);
const float fov = 45.f;
r->SetPerspectiveProjection(fov, 1.f, 1.f, 10000.f);
r->SetTransform(matrix4x4f::Identity());
r->SetDepthWrite(true);
r->SetDepthTest(true);
r->ClearDepthBuffer();
r->SetLights(1, &m_light);
Point pos(GetAbsolutePosition() + GetActiveOffset());
Point size(GetActiveArea());
r->SetViewport(pos.x, GetContext()->GetSize().y - pos.y - size.y, size.x, size.y);
matrix4x4f rot = matrix4x4f::RotateXMatrix(m_rotX);
rot.RotateY(m_rotY);
const float dist = m_model->GetDrawClipRadius() / sinf(DEG2RAD(fov*0.5f));
rot[14] = -dist;
m_model->Render(rot);
}
开发者ID:tnicoll,项目名称:pioneer,代码行数:27,代码来源:ModelSpinner.cpp
示例11: Render
/// Renders the title screen.
/// @param[in,out] renderer - The renderer to use for rendering.
void TitleScreen::Render(GRAPHICS::Renderer& renderer) const
{
// DRAW THE SUB-HEADING FOR THE GAME'S TITLE.
// It is centered within the top third of the screen.
MATH::FloatRectangle screen_rectangle = renderer.Screen.GetBoundingRectangle<float>();
float screen_left_x_position = screen_rectangle.GetLeftXPosition();
float screen_top_y_position = screen_rectangle.GetTopYPosition();
float screen_width_in_pixels = screen_rectangle.GetWidth();
float screen_height_in_pixels = screen_rectangle.GetHeight();
float one_third_of_screen_height_in_pixels = screen_height_in_pixels / 3.0f;
MATH::FloatRectangle sub_heading_screen_rectangle = MATH::FloatRectangle::FromLeftTopAndDimensions(
screen_left_x_position,
screen_top_y_position,
screen_width_in_pixels,
one_third_of_screen_height_in_pixels);
const float BIBLE_GAMES_HEADING_TEXT_SCALE = 1.5f;
renderer.RenderCenteredText(
"BIBLE GAMES",
sub_heading_screen_rectangle,
GRAPHICS::Color::WHITE,
BIBLE_GAMES_HEADING_TEXT_SCALE);
// DRAW THE MAIN GAME'S TITLE.
// It is centered within the middle third of the screen.
MATH::FloatRectangle main_title_screen_rectangle = MATH::FloatRectangle::FromLeftTopAndDimensions(
screen_left_x_position,
one_third_of_screen_height_in_pixels,
screen_width_in_pixels,
one_third_of_screen_height_in_pixels);
const float TITLE_TEXT_SCALE = 3.0f;
renderer.RenderCenteredText(
"NOAH's ARK",
main_title_screen_rectangle,
GRAPHICS::Color::YELLOW,
TITLE_TEXT_SCALE);
// DRAW THE 'PRESS START' TEXT.
// It is centered within the bottom third of the screen.
float two_thirds_screen_height_in_pixels = 2 * one_third_of_screen_height_in_pixels;
MATH::FloatRectangle press_enter_screen_rectangle = MATH::FloatRectangle::FromLeftTopAndDimensions(
screen_left_x_position,
two_thirds_screen_height_in_pixels,
screen_width_in_pixels,
one_third_of_screen_height_in_pixels);
renderer.RenderCenteredText(
"PRESS ENTER",
press_enter_screen_rectangle,
GRAPHICS::Color::RED);
}
开发者ID:,项目名称:,代码行数:51,代码来源:
示例12: Draw
void Context::Draw()
{
Graphics::Renderer *r = GetRenderer();
// reset renderer for each layer
for (std::vector<Layer*>::iterator i = m_layers.begin(); i != m_layers.end(); ++i) {
r->SetOrthographicProjection(0, m_width, m_height, 0, -1, 1);
r->SetTransform(matrix4x4f::Identity());
r->SetClearColor(Color::BLACK);
(*i)->Draw();
r->SetScissor(false);
}
}
开发者ID:AmesianX,项目名称:pioneer,代码行数:15,代码来源:Context.cpp
示例13: Render
void Billboard::Render(const matrix4x4f &trans, const RenderData *rd)
{
PROFILE_SCOPED()
Graphics::Renderer *r = GetRenderer();
const matrix3x3f rot = trans.GetOrient().Transpose();
//some hand-tweaked scaling, to make the lights seem larger from distance
const float size = m_size * Graphics::GetFovFactor() * Clamp(trans.GetTranslate().Length() / 500.f, 0.25f, 15.f);
const vector3f rotv1 = rot * vector3f(size*0.5f, -size*0.5f, 0.0f);
const vector3f rotv2 = rot * vector3f(size*0.5f, size*0.5f, 0.0f);
if( !m_vbuffer.Valid() )
{
//create buffer and upload data
Graphics::VertexBufferDesc vbd;
vbd.attrib[0].semantic = Graphics::ATTRIB_POSITION;
vbd.attrib[0].format = Graphics::ATTRIB_FORMAT_FLOAT3;
vbd.attrib[1].semantic = Graphics::ATTRIB_UV0;
vbd.attrib[1].format = Graphics::ATTRIB_FORMAT_FLOAT2;
vbd.numVertices = 6;
vbd.usage = Graphics::BUFFER_USAGE_DYNAMIC; // we could be updating this per-frame
m_vbuffer.Reset( r->CreateVertexBuffer(vbd) );
}
#pragma pack(push, 4)
struct PosUVVert {
vector3f pos;
vector2f uv;
};
#pragma pack(pop)
PosUVVert* vtxPtr = m_vbuffer->Map<PosUVVert>(Graphics::BUFFER_MAP_WRITE);
vtxPtr[0].pos = (m_offset - rotv1); vtxPtr[0].uv = vector2f(0.f, 0.f); //top left
vtxPtr[1].pos = (m_offset - rotv2); vtxPtr[1].uv = vector2f(0.f, 1.f); //bottom left
vtxPtr[2].pos = (m_offset + rotv2); vtxPtr[2].uv = vector2f(1.f, 0.f); //top right
vtxPtr[3].pos = (m_offset + rotv2); vtxPtr[3].uv = vector2f(1.f, 0.f); //top right
vtxPtr[4].pos = (m_offset - rotv2); vtxPtr[4].uv = vector2f(0.f, 1.f); //bottom left
vtxPtr[5].pos = (m_offset + rotv1); vtxPtr[5].uv = vector2f(1.f, 1.f); //bottom right
m_vbuffer->Unmap();
r->SetTransform(trans);
r->DrawBuffer(m_vbuffer.Get(), m_renderState, m_material.Get());
r->GetStats().AddToStatCount(Graphics::Stats::STAT_BILLBOARD, 1);
}
开发者ID:christiank,项目名称:pioneer,代码行数:46,代码来源:Billboard.cpp
示例14: Draw
void ShipSpinner::Draw()
{
Graphics::Renderer *r = GetContext()->GetRenderer();
Graphics::Renderer::StateTicket ticket(r);
r->SetPerspectiveProjection(45.f, 1.f, 1.f, 10000.f);
r->SetTransform(matrix4x4f::Identity());
r->SetDepthTest(true);
r->ClearDepthBuffer();
r->SetLights(1, &m_light);
Point pos(GetAbsolutePosition() + GetActiveOffset());
Point size(GetActiveArea());
r->SetViewport(pos.x, GetContext()->GetSize().y - pos.y - size.y, size.x, size.y);
matrix4x4f rot = matrix4x4f::RotateXMatrix(m_rotX);
rot.RotateY(m_rotY);
rot[14] = -1.5f * m_model->GetDrawClipRadius();
m_model->Render(r, rot, &m_params);
}
开发者ID:adammead,项目名称:pioneer,代码行数:25,代码来源:ShipSpinner.cpp
示例15: main
int main(int argc, char **argv)
{
FileSystem::Init();
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
Output("sdl init failed: %s\n", SDL_GetError());
exit(-1);
}
Graphics::Settings videoSettings;
videoSettings.width = WIDTH;
videoSettings.height = HEIGHT;
videoSettings.fullscreen = false;
videoSettings.hidden = false;
videoSettings.requestedSamples = 0;
videoSettings.vsync = false;
videoSettings.useTextureCompression = false;
videoSettings.enableDebugMessages = false;
videoSettings.iconFile = OS::GetIconFilename();
videoSettings.title = "textstress";
Graphics::Renderer *r = Graphics::Init(videoSettings);
r->SetOrthographicProjection(0, WIDTH, HEIGHT, 0, -1, 1);
r->SetTransform(matrix4x4f::Identity());
r->SetClearColor(Color::BLACK);
r->SetBlendMode(Graphics::BLEND_ALPHA);
r->SetDepthTest(false);
const Text::FontDescriptor fontDesc(Text::FontDescriptor::Load(FileSystem::gameDataFiles, "fonts/UIFont.ini", "en"));
Text::TextureFont *font = new Text::TextureFont(fontDesc, r);
std::string str;
for (int i = 33; i < 127; i++)
str.push_back(i);
while (1) {
bool done = false;
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE)
done = true;
}
if (done)
break;
font->RenderString(str.c_str(), rand()%(WIDTH*2)-WIDTH, rand()%HEIGHT, Color::WHITE);
r->SwapBuffers();
}
delete font;
delete r;
SDL_Quit();
exit(0);
}
开发者ID:,项目名称:,代码行数:58,代码来源:
示例16: RenderTab
/// Renders a tab that is part of the inventory GUI.
/// @param[in] tab_text - The text to display on the tab.
/// @param[in] left_top_screen_position_in_pixels - The left-top screen position of the tab.
/// @param[in] background_color - The background color of the tab.
/// @param[in,out] renderer - The renderer to use for rendering.
void InventoryGui::RenderTab(
const std::string& tab_text,
const MATH::Vector2f& left_top_screen_position_in_pixels,
const GRAPHICS::Color& background_color,
GRAPHICS::Renderer& renderer) const
{
// RENDER A BACKGROUND RECTANGLE FOR THE TAB.
unsigned int tab_text_width_in_pixels = GRAPHICS::GUI::Glyph::WIDTH_IN_PIXELS * tab_text.length();
MATH::FloatRectangle tab_rectangle = MATH::FloatRectangle::FromLeftTopAndDimensions(
left_top_screen_position_in_pixels.X,
left_top_screen_position_in_pixels.Y,
static_cast<float>(tab_text_width_in_pixels),
static_cast<float>(GRAPHICS::GUI::Glyph::HEIGHT_IN_PIXELS));
renderer.RenderScreenRectangle(
tab_rectangle,
background_color);
// RENDER THE TEXT FOR THE TAB.
renderer.RenderText(tab_text, left_top_screen_position_in_pixels, GRAPHICS::Color::BLACK);
}
开发者ID:,项目名称:,代码行数:26,代码来源:
示例17: Draw
void Icon::Draw()
{
const Point &offset = GetActiveOffset();
const Point &area = GetActiveArea();
const float x = offset.x;
const float y = offset.y;
const float sx = area.x;
const float sy = area.y;
Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_UV0);
va.Add(vector3f(x, y, 0.0f), vector2f(s_texScale.x*(m_texPos.x), s_texScale.y*(m_texPos.y)));
va.Add(vector3f(x, y+sy, 0.0f), vector2f(s_texScale.x*(m_texPos.x), s_texScale.y*(m_texPos.y+48)));
va.Add(vector3f(x+sx, y, 0.0f), vector2f(s_texScale.x*(m_texPos.x+48), s_texScale.y*(m_texPos.y)));
va.Add(vector3f(x+sx, y+sy, 0.0f), vector2f(s_texScale.x*(m_texPos.x+48), s_texScale.y*(m_texPos.y+48)));
Graphics::Renderer *r = GetContext()->GetRenderer();
r->SetBlendMode(Graphics::BLEND_ALPHA);
s_material->diffuse = m_color;
r->DrawTriangles(&va, s_material.Get(), Graphics::TRIANGLE_STRIP);
}
开发者ID:tnicoll,项目名称:pioneer,代码行数:21,代码来源:Icon.cpp
示例18: Draw
void Gradient::Draw()
{
const Point &offset = GetActiveOffset();
const Point &area = GetActiveArea();
const float x = offset.x;
const float y = offset.y;
const float sx = area.x;
const float sy = area.y;
Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_DIFFUSE);
va.Add(vector3f(x, y, 0.0f), m_beginColor);
va.Add(vector3f(x, y+sy, 0.0f), m_direction == HORIZONTAL ? m_beginColor : m_endColor);
va.Add(vector3f(x+sx, y, 0.0f), m_direction == HORIZONTAL ? m_endColor : m_beginColor);
va.Add(vector3f(x+sx, y+sy, 0.0f), m_endColor);
Graphics::Renderer *r = GetContext()->GetRenderer();
r->SetBlendMode(Graphics::BLEND_ALPHA);
r->DrawTriangles(&va, m_material.Get(), Graphics::TRIANGLE_STRIP);
Container::Draw();
}
开发者ID:HeadHunterEG,项目名称:pioneer,代码行数:22,代码来源:Gradient.cpp
示例19: Draw
void Image::Draw()
{
const Point &offset = GetActiveOffset();
const Point &area = GetActiveArea();
const float x = offset.x;
const float y = offset.y;
const float sx = area.x;
const float sy = area.y;
const vector2f texSize = m_texture->GetDescriptor().texSize;
Graphics::VertexArray va(Graphics::ATTRIB_POSITION | Graphics::ATTRIB_UV0);
va.Add(vector3f(x, y, 0.0f), vector2f(0.0f, 0.0f));
va.Add(vector3f(x, y+sy, 0.0f), vector2f(0.0f, texSize.y));
va.Add(vector3f(x+sx, y, 0.0f), vector2f(texSize.x, 0.0f));
va.Add(vector3f(x+sx, y+sy, 0.0f), vector2f(texSize.x, texSize.y));
Graphics::Renderer *r = GetContext()->GetRenderer();
r->SetBlendMode(Graphics::BLEND_ALPHA);
r->DrawTriangles(&va, m_material.Get(), Graphics::TRIANGLE_STRIP);
}
开发者ID:GizmoR13,项目名称:pioneer,代码行数:22,代码来源:Image.cpp
示例20: Render
void Thruster::Render(const matrix4x4f &trans, const RenderData *rd)
{
float power = 0.f;
power = -dir.Dot(vector3f(rd->linthrust));
if (!linearOnly) {
// pitch X
// yaw Y
// roll Z
//model center is at 0,0,0, no need for invSubModelMat stuff
const vector3f at = vector3f(rd->angthrust);
const vector3f angdir = pos.Cross(dir);
const float xp = angdir.x * at.x;
const float yp = angdir.y * at.y;
const float zp = angdir.z * at.z;
if (xp+yp+zp > 0) {
if (xp > yp && xp > zp && fabs(at.x) > power) power = fabs(at.x);
else if (yp > xp && yp > zp && fabs(at.y) > power) power = fabs(at.y);
else if (zp > xp && zp > yp && fabs(at.z) > power) power = fabs(at.z);
}
}
if (power < 0.001f) return;
Graphics::Renderer *r = GetRenderer();
r->SetTransform(trans);
r->SetBlendMode(Graphics::BLEND_ALPHA_ONE);
r->SetDepthWrite(false);
m_tMat->diffuse = m_glowMat->diffuse = baseColor * power;
//directional fade
vector3f cdir = vector3f(trans * -dir).Normalized();
vector3f vdir = vector3f(trans[2], trans[6], -trans[10]).Normalized();
// XXX check this for transition to new colors.
m_glowMat->diffuse.a = Easing::Circ::EaseIn(Clamp(vdir.Dot(cdir), 0.f, 1.f), 0.f, 1.f, 1.f) * 255;
m_tMat->diffuse.a = 255 - m_glowMat->diffuse.a;
r->DrawTriangles(m_tVerts.get(), m_tMat.Get());
r->DrawTriangles(m_glowVerts.get(), m_glowMat.Get());
r->SetBlendMode(Graphics::BLEND_SOLID);
r->SetDepthWrite(true);
}
开发者ID:Luomu,项目名称:pioneer,代码行数:46,代码来源:Thruster.cpp
注:本文中的graphics::Renderer类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论