OpenGLでオブジェクトへ描画するには?

解決


たけだ  2007-09-12 05:02:50  No: 27726

OpenGLを使ってTImeggeへ描画しようとしていますが、うまくいきません。
TButton(Button1)を押すことで描画が実行されるようにしていますが、
全体が白く初期化されてしまい、描画が実行されていないように見えます。
どこがおかしいか教えていただけませんでしょうか?

procedure TForm1.Button1Click(Sender: TObject);

var
mhrc:hglrc;
ipixelformat:integer;
pfd:tpixelformatdescriptor;

begin

with pfd do
     begin
     nSize:=sizeof(pfd);
     nVersion:=1;
     dwFlags:=PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL;
     iPixelType:=PFD_TYPE_RGBA;
     cColorBits:=32;
     cRedBits:=0;
     cRedShift:=0;
     cGreenBits:=0;
     cGreenShift:=0;
     cBlueBits:=0;
     cBlueShift:=0;
     cAlphaBits:=0;
     cAlphaShift:=0;
     cAccumBits:=0;
     cAccumRedBits:=0;
     cAccumGreenBits:=0;
     cAccumBlueBits:=0;
     cAccumAlphaBits:=0;
     cDepthBits:=32;
     cStencilBits:=0;
     cAuxBuffers:=0;
     iLayerType:=PFD_MAIN_PLANE;
     bReserved:=0;
     dwLayerMask:=0;
     dwVisibleMask:=0;
     dwDamageMask:=0;
     end;

  ipixelformat:=choosepixelformat(image1.canvas.handle,@pfd);
  setpixelformat(image1.canvas.Handle,ipixelformat,@pfd);
  mhrc:=wglcreatecontext(image1.canvas.handle);

  wglmakecurrent(image1.canvas.handle,mhrc);

  glclearcolor(0,0,0,0);
  glclear(GL_COLOR_BUFFER_BIT);
  glcolor3f(1,0,0);
  glbegin(gl_lines);
  glvertex2f(0.25,0.25);
  glvertex2f(0.75,0.75);
  glend();
  glflush();

  wglmakecurrent(0,0);
  wgldeletecontext(mhrc);
end;


Panelもオブジェクト  2007-09-12 20:51:08  No: 27727

WinControlではない TImageへの描画はあきらめて、Panel上に描画したら?


たけだ  2007-09-12 23:01:24  No: 27728

ありがとうございます。
Tpanelへ描画することでうまくいきました。

ところでこのTpanelから描画結果を書き出す方法を探しています。
ご存知でしたらご教授いただけませんでしょうか?


風鈴加算  2007-09-13 01:52:53  No: 27729

勘助:「親方様、それには何としても WinAPIとBitmapの助けを借りねばなりません」
晴信:「手を貸してくれるなら如何なる希も叶えて進ぜよう」
勘助:「そのつもりで既に手は打ってございます」
晴信:「流石抜かりはないのぅ、して、そのWinAPIとは如何なる者じゃ」
勘助:「BitBltと申す者にて」
晴信:「して、その方法や如何に」
勘助:「そやつに保存させたし'でばいすこんてきすと'、'縦横の丈'など渡し、Bitmapにこぴーさせまする」
晴信:「その後は如何に」
勘助:「後は焼くなど煮るなど如何様にも…」
晴信:「わしは蒸すのがいいのぉ」
勘助:「では然様に手筈を整えまする、四ばしお待ちを」
晴信:「急げ、五ばしは待てぬぞ」


たけだ  2007-09-15 01:22:26  No: 27730

風鈴加算  様
ありがとうございます。
Bitbltで解決いたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加