jogamp.opengl.glu.gl2.nurbs.GL2CurveEvaluator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jogl Show documentation
Show all versions of jogl Show documentation
Java™ Binding for the OpenGL® API (Atomic Jar files)
package jogamp.opengl.glu.gl2.nurbs;
import jogamp.opengl.glu.nurbs.*;
import javax.media.opengl.GL;
import javax.media.opengl.GL2;
import javax.media.opengl.GL2GL3;
import javax.media.opengl.glu.GLU;
import javax.media.opengl.glu.gl2.GLUgl2;
/**
* Class rendering curves with OpenGL
* @author Tomáš Hráský
*
*/
class GL2CurveEvaluator implements CurveEvaluator {
/**
* Output triangles (for callback) or render curve
*/
private boolean output_triangles;
/**
* OpenGL object
*/
private final GL2 gl;
/**
* Not used
*/
private int vertex_flag;
/**
* Not used
*/
private int normal_flag;
/**
* Not used
*/
private int color_flag;
/**
* Not used
*/
private int texcoord_flag;
/**
* Number of bezier arc - used for color distinguishing of arcs forming NURBS curve
*/
private int poradi;
/**
* Makes new Evaluator
*/
public GL2CurveEvaluator() {
gl = GLUgl2.getCurrentGL2();
}
/**
* Pushes eval bit
*/
@Override
public void bgnmap1f() {
// DONE
if (output_triangles) {
vertex_flag = 0;
normal_flag = 0;
color_flag = 0;
texcoord_flag = 0;
} else {
gl.glPushAttrib(GL2.GL_EVAL_BIT);
}
}
/**
* Pops all OpenGL attributes
*/
@Override
public void endmap1f() {
// DONE
if (output_triangles) {
} else {
gl.glPopAttrib();
}
}
/**
* Initializes opengl evaluator
* @param type curve type
* @param ulo lowest u
* @param uhi highest u
* @param stride control point coords
* @param order curve order
* @param ps control points
*/
@Override
public void map1f(final int type, final float ulo, final float uhi, final int stride, final int order,
final CArrayOfFloats ps) {
if (output_triangles) {
// TODO code for callback (output_triangles probably indicates callback)
// System.out.println("TODO curveevaluator.map1f-output_triangles");
} else {
gl.glMap1f(type, ulo, uhi, stride, order, ps.getArray(), ps
.getPointer());
// DEBUG - drawing bézier control points
// gl.glColor3d(.5,.5,.5);
// gl.glPointSize(5);
// gl.glBegin(GL2.GL_POINTS);
// float[] ctrlpoints=ps.getArray();
// for(int i=ps.getPointer();i