本文整理汇总了C++中SurfacePtr::get_texture方法的典型用法代码示例。如果您正苦于以下问题:C++ SurfacePtr::get_texture方法的具体用法?C++ SurfacePtr::get_texture怎么用?C++ SurfacePtr::get_texture使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SurfacePtr
的用法示例。
在下文中一共展示了SurfacePtr::get_texture方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: new
void
Canvas::draw_surface_batch(const SurfacePtr& surface,
std::vector<Rectf> srcrects,
std::vector<Rectf> dstrects,
std::vector<float> angles,
const Color& color,
int layer)
{
if (!surface) return;
auto request = new(m_obst) TextureRequest();
request->type = TEXTURE;
request->layer = layer;
request->flip = m_context.transform().flip ^ surface->get_flip();
request->alpha = m_context.transform().alpha;
request->color = color;
request->srcrects = std::move(srcrects);
request->dstrects = std::move(dstrects);
request->angles = std::move(angles);
for (auto& dstrect : request->dstrects)
{
dstrect = Rectf(apply_translate(dstrect.p1()), dstrect.get_size());
}
request->texture = surface->get_texture().get();
request->displacement_texture = surface->get_displacement_texture().get();
m_requests.push_back(request);
}
示例2: draw_particles
void draw_particles()
{
glPushMatrix();
glMultMatrixf(get_modelview().matrix);
OpenGLState state;
state.bind_texture(surface->get_texture());
state.set_blend_func(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
state.enable(GL_BLEND);
state.activate();
glBegin(GL_QUADS);
for(ParticleSystem::Particles::iterator i = psys.begin(); i != psys.end(); ++i)
{
if (i->t != -1.0f)
{
float p = 1.0f - psys.get_progress(i->t);
Color color(psys.get_color_start().r * p + psys.get_color_stop().r * (1.0f - p),
psys.get_color_start().g * p + psys.get_color_stop().g * (1.0f - p),
psys.get_color_start().b * p + psys.get_color_stop().b * (1.0f - p),
psys.get_color_start().a * p + psys.get_color_stop().a * (1.0f - p));
// scale
float scale = psys.get_size_start() +
psys.get_progress(i->t) * (psys.get_size_stop() - psys.get_size_start());
float width = surface->get_width() * scale;
float height = surface->get_height() * scale;
// rotate
float x_rot = width/2;
float y_rot = height/2;
if (i->angle != 0)
{
float s = sinf(math::pi * i->angle/180.0f);
float c = cosf(math::pi * i->angle/180.0f);
x_rot = (width/2) * c - (height/2) * s;
y_rot = (width/2) * s + (height/2) * c;
}
glColor4f(color.r, color.g, color.b, color.a);
glTexCoord2f(0, 0);
glVertex2f(i->x - x_rot, i->y - y_rot);
glTexCoord2f(1, 0);
glVertex2f(i->x + y_rot, i->y - x_rot);
glTexCoord2f(1, 1);
glVertex2f(i->x + x_rot, i->y + y_rot);
glTexCoord2f(0, 1);
glVertex2f(i->x - y_rot, i->y + x_rot);
}
}
glEnd();
glPopMatrix();
}