Ich bins schon wieder. Ich versuche jetzt mit folgendem Quellcode die 3DS Models zu laden, es kommt zwar beim compilieren kein Fehler, aber es wird auch keine Form angezigt!
Code:
private
{ Private-Deklarationen }
procedure InitModels;
procedure RenderModels;
Code:
Model: array[1..8,1..8] of TAll3dsMesh;
Code:
{ Init Models}
procedure TForm1.InitModels; //Wird in der Form.Create aufgerufen
var i,x : integer;
begin
for i := 1 to 8 do
begin
for x := 1 to 8 do
begin
Model[i,x] := TAll3dsMesh.Create(nil);
//Figuren setzen
if i = 1 then
begin
case x of
1: Model[i,x].LoadFromFile('mickey.3ds');
2: Model[i,x].LoadFromFile('mickey.3ds');
3: Model[i,x].LoadFromFile('mickey.3ds');
4: Model[i,x].LoadFromFile('mickey.3ds');
5: Model[i,x].LoadFromFile('mickey.3ds');
6: Model[i,x].LoadFromFile('mickey.3ds');
7: Model[i,x].LoadFromFile('mickey.3ds');
8: Model[i,x].LoadFromFile('mickey.3ds');
end;
end;
if i = 8 then
begin
case x of
1: Model[i,x].LoadFromFile('mickey.3ds');
2: Model[i,x].LoadFromFile('mickey.3ds');
3: Model[i,x].LoadFromFile('mickey.3ds');
4: Model[i,x].LoadFromFile('mickey.3ds');
5: Model[i,x].LoadFromFile('mickey.3ds');
6: Model[i,x].LoadFromFile('mickey.3ds');
7: Model[i,x].LoadFromFile('mickey.3ds');
8: Model[i,x].LoadFromFile('mickey.3ds');
end;
end;
//Bauern setzen
if i = 2 then
Model[i,x].LoadFromFile('mickey.3ds');
if i = 7 then
Model[i,x].LoadFromFile('mickey.3ds');
end;
end;
end;
{ Render Models }
procedure TForm1.RenderModels; //Wird in der Render Procedure aufgerufen
var i,x : integer;
begin
for i := 1 to 8 do
begin
for x := 1 to 8 do
begin
Model[i,x].Render;
end;
end;
end;
Das ganze soll ein Schachspiel werden, da ich aber noch keine Models habe (die werden von einem Freund gemacht) hab ich mir eben dieses Mickey Models testweise heruntergeladen.
Was ist an dem Code falsch? Ohne diesen Code funktioniert das Programm wunderbar (eben ohne Models)
1. Zeig doch mal die Render Procedure.
2. kann es sein das cull_facing an ist und die objekte genau aufem 0,0,0 punkt sind und du somit nichts siehst.
Oder ganz anderen gründer, die Renderprocedure wäre gut.
Ausserdem nen Tip
Ich würde vorher in nen Array immer zur Zahl den Modelname schreiben.
(Konstante)
Dann kannstes einfach laden.
Ohne soviel Case-Käse.
1.) Feld Create Erstellt das Schachbrett. Funktioniert einwandfrei.
2.) Ohne den Versuch die Models zu laden funktioniert alles perfekt und wird einwanfrei angezeigt!
Wie meinst du ob ich geprüft hab ob sie gerendert werden?
1.) Ja nicht mal die Form wird mehr geladen
2.) Muss ich noch machen
3.) Hmm, d.h. ich sollte die Procedure CreateFeld (für das Schachbrett) in FormCreate aufrufen ... das sollte funktionieren!
Also, habs gefunden.
Hatte aber nichts mit dem Loader zu tun.
Code:
procedure TSchach.RenderModels;
var i,x :integer;
begin
for i :=1to8do
begin
for x :=1to8do
begin
ifassigned(Model[i,x])then
Model[i,x].Render;
end;
end;
end;
Das muss so heissen.
Du rufst da sonst Models auf Model[6,8] wo nichts drinne steht.
Also die nicht createt sind.
Entweder du änderst dein laden und rendern oder sonstwas.
immer dieses assigned bei jeder figur in jedem Frame muss ja net sein.
EDIT: in glMath steht noch opengl12 oder so
EDIT2: Und nimm mal nen anderes Model.
Das geht ja garnet, so viele polygone.
und dann lädst du das auch noch 4*8 mal.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.