Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Почему не работает цвет?


Автор: Phantomka 10.4.2008, 16:21
Подскажите, пожалуйста, почему у меня может не получаться нарисовать цветные линии? Цвет фона меняется, а цвет линий - никак не хочет smile 

Код

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.


Заранее благодарна за помощь smile 

Автор: WaReZMEN 11.4.2008, 01:07
Phantomka, хз у меня все меняется smile просто цвет 255,0,255 хреново видно на красном фоне....

Автор: Phantomka 11.4.2008, 13:25
Я пробовала разные вариации от черного до белого... линии остаются черными =(

Автор: WaReZMEN 14.4.2008, 00:56
Phantomka, у меня цветная... может драва на ведяху поставитьпосвежее?

Автор: Phantomka 17.4.2008, 12:01
Спасибо за совет. Потестила на другом компе - там нормально все  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)