0

我通常在 GLDirectOpenGL1Render 上使用 TGLCanvas 来绘制这样的线条:

uses
  GLCanvas,
  GLRenderContextInfo
{...}

procedure TForm1.GLDirectOpenGL1Render(Sender: TObject;
  var rci: TRenderContextInfo);
var
   glc: TGLCanvas;
begin
  glc:=TGLCanvas.Create(GLSceneViewerL.Width, GLSceneViewerL.Height);
  with glc do
  begin
    //Drawing lines here
    Line(0, 0, 10, 20);
    Line(10, 20, 30, 30);
    {...}
  end;
  glc.Free;
end;

但在当前项目中,我有不止一个带有不同相机的 GLSceneViewer,我只需要在一个 GLSceneViewer 上画线,而不是在所有其他场景查看器上画线。OpenGL 绘图速度快是首选。有任何想法吗?

4

1 回答 1

1

好的,在玩了 GLSceneViewer 之后,我想出了如何做到这一点:而不是在GLDirectOpenGL1 的onRender事件上画线,你应该在必要的 GLSceneViewer 的PostRender事件上画线,所以代码应该如下所示:

procedure TForm1.GLSceneViewerL(Sender: TObject);
var
   glc : TGLCanvas;
begin
    glc:=TGLCanvas.Create(GLSceneViewerL.Width, GLSceneViewerL.Height);
    with glc do
    begin
      //Drawing lines here
      Line(0, 0, 10, 20);
      Line(10, 20, 30, 30);
      {...}
    end;
    glc.Free;
end;

就是这样,线条将仅在具有“GLSceneViewerL”名称的查看器上绘制,但不适用于场景的所有查看器。

于 2015-06-04T06:41:27.403 回答