package org.geogebra.common.geogebra3D.euclidian3D.openGL;
import org.geogebra.common.geogebra3D.euclidian3D.EuclidianView3D;
import org.geogebra.common.kernel.Matrix.Coords;
/**
* Manager that uses template geometries to avoid recalculate them
*
* @author mathieu
*
*/
public class ManagerShadersWithTemplates extends ManagerShaders {
/**
* constructor
*
* @param renderer
* GL renderer
* @param view3d
* 3D view
*/
public ManagerShadersWithTemplates(Renderer renderer,
EuclidianView3D view3d) {
super(renderer, view3d);
// points geometry templates
setScalerIdentity();
pointGeometry = new int[3];
pointGeometry[0] = drawSphere(2, Coords.O, 1d, -1);
pointGeometry[1] = drawSphere(4, Coords.O, 1d, -1);
pointGeometry[2] = drawSphere(7, Coords.O, 1d, -1);
setScalerView();
}
private int[] pointGeometry;
@Override
public int drawPoint(int size, Coords center, int index) {
scaleXYZ(center);
// find point geometry template
int i = 1;
// int size2 = 4;
if (size < 3) {
i = 0;
// size2 = 2;
} else if (size > 5) {
i = 2;
// size2 = 7;
}
// if (pointGeometry[i] == -1){
// pointGeometry[i] = drawSphere(size2, Coords.O, 1d);
// }
return pointGeometry[i];
}
@Override
public void draw(int index, Coords center) {
((RendererShadersInterface) renderer).setCenter(center);
super.draw(index);
}
}