void
OsdUtilAdaptiveEvaluator::EvaluateLimit(
    const OsdEvalCoords &coords, float P[3], float dPdu[3], float dPdv[3])
{

    // This controller is an empty object, essentially a namespace.
    OsdCpuEvalLimitController cpuEvalLimitController;
    
    static OsdVertexBufferDescriptor desc(0,3,3);

    // Setup evaluation controller. Values are offset, length, stride */
    OsdVertexBufferDescriptor in_desc(0, 3, 3), out_desc(0, 0, 0);
    
    cpuEvalLimitController.BindVertexBuffers<OsdCpuVertexBuffer,OsdCpuVertexBuffer>(in_desc, _vertexBuffer, out_desc, NULL);
    
    cpuEvalLimitController.EvalLimitSample(coords, _evalLimitContext, desc, P, dPdu, dPdv);
}
Example #2
0
	OpenSubdPatch(OsdFarMesh *farmesh, OsdCpuVertexBuffer *vbuf_base)
	{
		face_id = 0;

		/* create buffers for evaluation */
		vbuf_P = OsdCpuVertexBuffer::Create(3, 1);
		vbuf_dPdu = OsdCpuVertexBuffer::Create(3, 1);
		vbuf_dPdv = OsdCpuVertexBuffer::Create(3, 1);

		P = vbuf_P->BindCpuBuffer();
		dPdu = vbuf_dPdu->BindCpuBuffer();
		dPdv = vbuf_dPdv->BindCpuBuffer();

		/* setup evaluation context */
		OsdVertexBufferDescriptor in_desc(0, 3, 3), out_desc(0, 3, 3); /* offset, length, stride */

		evalctx = OsdCpuEvalLimitContext::Create(farmesh, false);
		evalctx->GetVertexData().Bind(in_desc, vbuf_base, out_desc, vbuf_P, vbuf_dPdu, vbuf_dPdv);
	}