AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Vorgang kann nicht erzeugt werden

Ein Thema von napsterxx · begonnen am 18. Mai 2008 · letzter Beitrag vom 20. Mai 2008
 
napsterxx

Registriert seit: 18. Mär 2007
Ort: Borland
556 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Vorgang kann nicht erzeugt werden

  Alt 18. Mai 2008, 12:13
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DXHelp, Direct3D9, D3DX9;

type
  TForm1 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure OnIdle(Sender: TObject; var Done: boolean);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Direct3D9: IDirect3D9;
  D3DDev9: IDirect3DDevice9;

  Vertexbuffer: IDirect3DVertexBuffer9;

type
  TD3DLVertex = record
    Position: TD3DXVector3;
    Diffuse: TD3DColor;
  end;

const
  D3DFVF_TD3DLVERTEX = D3DFVF_XYZ or D3DFVF_DIFFUSE;

implementation

{$R *.dfm}

function GetTD3DLVertex( X, Y, Z: Extended; Farbe: TD3DColor ): TD3DLVertex;
begin
  Result.Position := D3DXVector3( X, Y, Z );
  Result.Diffuse := Farbe;
end;

function InitGeometry: HRESULT;
var
  Vertices: Array[0..2] of TD3DLVertex;
  pVertices: Pointer;
begin
  Vertices[0] := GetTD3DLVertex( 1.0, -1.0, 0.0, $FFFF0000 );
  Vertices[1] := GetTD3DLVertex( -1.0, -1.0, 0.0, $FF0000FF );
  Vertices[2] := GetTD3DLVertex( 0.0, 1.0, 0.0, $FFFFFFFF );

  Result := D3DDev9.CreateVertexBuffer( Sizeof( TD3DLVertex) *3,
                                        D3DUSAGE_WRITEONLY,
                                        D3DFVF_TD3DLVERTEX,
                                        D3DPOOL_DEFAULT,
                                        Vertexbuffer, nil );
  if Result <> D3D_OK then
    Exit;

  Result := Vertexbuffer.Lock( 0, SizeOf( TD3DLVertex ) * 3, pVertices, 0 );
  if Result <> D3D_OK then
    Exit;
  Move( Vertices, pVertices^, SizeOf( Vertices ) );
  Result := Vertexbuffer.Unlock;

  D3DDev9.SetRenderState( D3DRS_LIGHTING, LongWord( False ) );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  DHInitDGFX( Form1.Handle, False, True, 0, 0, 0, True, Direct3D9, D3DDev9 );
  InitGeometry;
  Application.OnIdle := OnIdle;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Vertexbuffer := nil;
  DHCloseDGFX( Direct3D9, D3DDev9 );
end;

procedure Render;
begin
  D3DDev9.BeginScene;
  D3DDev9.Clear( 0, nil, D3DCLEAR_TARGET, D3DCOLOR_ARGB( 0, 0, 0, 0 ), 1.0, 0);

  D3DDev9.SetStreamSource( 0, VertexBuffer, 0, SizeOf( TD3DLVertex ) );
  D3DDev9.SetFVF( D3DFVF_TD3DLVertex );

  D3DDev9.DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );


  D3DDev9.EndScene;
  D3DDev9.Present( nil, nil, 0, nil );
end;

procedure TForm1.OnIdle(Sender: TObject; var done: boolean);
begin
  done := false;
  Render;
end;

end.
Der Code hat gestern noch funktioniert
Du derefernzierst p2 einmal und weißt die Adresse von i zu. Das heißt p2 (also der Zeiger auf einen Zeiger) zeigt auf den Zeiger p1 welchen du so auf i zeigen lässt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz