OpenGL evaluators use a Bezier basis. To render a surface using any other basis, such as B-spline, you must convert your control points to a Bezier basis. The OpenGL Programming Guide , Chapter 12, lists a number of reference books that cover the math behind these conversions. OpenGL does not provide a straightforward mechanism for this. You might download the Mesa source code distribution , and modify its evaluator code to return object coordinates rather than pass them into the OpenGL geometry pipeline.
Evaluators involve a lot of math, so their performance in immediate mode is sometimes unacceptable.
Indeed, this would be a good solution if it were possible. Some implementations provide maximum evaluator performance through the use of display lists.