我通常在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绘图可以提供快速的速度。有什么想法吗?
答案 0 :(得分:1)
好的,在玩了GLSceneViewer之后我想出了怎么做:不要在GLDirectOpenGL1的 onRender 事件上画线,你应该在 PostRender 事件上绘制线条。一个必要的GLSceneViewer,所以代码看起来应该是这样的:
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”名称绘制,但不适用于场景的所有观看者。