Пытался опробовать работу с компонентом 2-и 3d графики -Mathsoft 3-D Plot (TOpenGL)
как в Delphi, так и в C++ Builder прежде всего в режиме построения 3d
В Delphi при установке и работе с ним в приложении встетился с следующей проблемой 1)после инсталляции и работе с ним он при использовании на форме приложения имеет черный фон и соответственно отсутствие возможности увидеть график поверхности.
 код ниже вроде не дает ошибок
 procedure TForm1.bOKClick(Sender: TObject);
var i,j: integer;
begin
 if (inp()<0) then exit;
 vr := VarArrayCreate([0,n,0,n],varDouble );
 dx:=(xb-xm)/N;  dy:=(yb-ym)/N;
 for i:=0 to N do
 for j:=0 to N do
   begin
  x:=xm+i*dx; y:=ym+j*dy;  z:=x*x+y*y;
  vr[i,j] := z;
   end;
OpenGL1.RemoveSurfaces;
OpenGL1.AddSurface(vr);
end;
 в С++ Builder  обращение к VarArrayCreate немного другое и не проходит оператор присваивания типа  vr[i,j] := z;поэтому использовал массивы int bnd1[2] = {0,N}; для 2d и int bnd2[4] = {0,N-1,0,N-1};   для 3d
Для заполнения вариантного массива использовал PutElement код 
int bnd1[2] = {0,N}; 
gArr = VarArrayCreate(bnd1,1,varDouble);
for (int i=0; i<=N;i++)
{y=2*sin(xn+i*dx); gArr.PutElement(y,i); }
 благополучно работает и строит в 3d плоский график синусоиды
а код
int bnd2[4] = {0,N-1,0,N-1};
gArr = VarArrayCreate(bnd2,3,varVariant);
for (int i=0; i<=N;i++)
for (int j=0; j<=N;j++)
{
  x=xn+i*dx; y=yn+y*dy;z=cos(sqrt(x*x+y*y));
  gArr.PutElement(z,y,x);
}
приводит к выходу за границы памяти при 1-же обращении
Возможно неправилен выдов PutElement с 3 параметрами.
Заменил на gArr.PutElement(z,i*N+j); -ошибка не изменилась