Подскажите, пожалуйста, почему у меня может не получаться нарисовать цветные линии? Цвет фона меняется, а цвет линий - никак не хочет
| Код | unit Example1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,Direct3D9, Direct3D, D3DX9;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } procedure Render(); end;
type MyVertex1 = packed record x, y, z, rhw: Single; color: DWORD; end; type MyVertex2 = packed record x, y, z: Single; n1, n2, n3: Single; end;
var Form1: TForm1; direct3d: IDirect3D9; device: IDirect3DDevice9; display: TD3DDisplayMode; params: TD3DPresentParameters; line : ID3DXLine; points: array[0..1] of TD3DXVector2 = ( (x:100; y:100), (x:200; y:200) ); data: array [0..9] of MyVertex1;
const MY_FVF = D3DFVF_XYZRHW or D3DFVF_DIFFUSE;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin direct3d := Direct3DCreate9( D3D_SDK_VERSION );
direct3d.GetAdapterDisplayMode( D3DADAPTER_DEFAULT, display );
ZeroMemory( @params, SizeOf(params) ); params.Windowed := True; params.SwapEffect := D3DSWAPEFFECT_DISCARD; params.BackBufferFormat := display.Format;
direct3d.CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, Handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, @params, device ); end;
procedure TForm1.FormDestroy(Sender: TObject); begin direct3d := nil; end;
procedure TForm1.FormPaint(Sender: TObject); begin Render; end;
procedure TForm1.Render; var i: integer; begin device.BeginScene; device.Clear(0,nil,D3DCLEAR_TARGET, D3DCOLOR_XRGB(225,0,0), 1.0,0); device.SetFVF( MY_FVF); for I := 0 to 9 do begin data[i].x := 100; data[i].y := 10 * i + 20; data[i].color := D3DCOLOR_XRGB(225,0,225); end; device.DrawPrimitiveUP(Direct3D9.D3DPT_LINELIST, 9, data, SizeOf(MyVertex1)); device.EndScene; device.Present(nil, nil, 0, nil);
end; end.
|
Заранее благодарна за помощь |