Пример #1
0
 //! Drawable:: Called after drawing
 void BillboardParticles::postDraw(SceneRenderer & renderer)
 {
     renderer.setDepthMask(true);
     renderer.setBlend(false);
     renderer.getProgram().disableArrayPtr("in_position");
     renderer.getProgram().disableArrayPtr("in_texcoord");
     renderer.getProgram().disableArrayPtr("in_color");
 }
Пример #2
0
 //! Drawable:: Draw one occurrence
 void BillboardParticles::drawOccurrence(SceneRenderer & renderer, SceneNode & node)
 {
     Mat4 model_view = node.getScene().getCamera().getTransform() * node.getCachedTransformRef();
     Mat4 model_view_projection = node.getScene().getCamera().getProjection() * model_view;
     
     renderer.getProgram().setParamMat4("model_view_projection_matrix", model_view_projection);
     renderer.getProgram().setVertexData(vbo.get(), current_node * sizeof(VertexTemplate) * particle_count * 4);
     renderer.drawElements(GL_TRIANGLE_STRIP, particle_count * 6, ibo);
     
     current_node++;
 }
Пример #3
0
 //! Drawable:: Called upon drawing
 void BillboardParticles::preDraw(SceneRenderer & renderer)
 {
     renderer.useProgram("BillboardParticleShader.shader");
     renderer.setDepthMask(false);
     renderer.setBlend(true);
     renderer.setBlendFunc(GL_SRC_ALPHA, GL_ONE);
     renderer.useTexture(emitter->properties->texture);
     renderer.getProgram().setVertexData(tbo.get());
     
     current_node = 0;
 }