For...Next und Types o.O

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

OldSkool90

Betreff: For...Next und Types o.O

BeitragSa, Feb 20, 2010 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich war gerade dabei ein paar Types zu erstellen und bissl mehr. Als alles lief wie es sollte, da dachte ich mir: "Mensch, Ein Objekt ist doch langweilig"...also versuchte ich folgendes:
Code: [AUSKLAPPEN]

SuperStrict

Global gx:Int,gy:Int,a:Int

gx = 1600
gy = 1200

Type LightSource
   Field x1:Int
   Field x2:Int
   Field y1:Int
   Field y2:Int
   Field xSrc:Int
   Field ySrc:Int
   Field xDir1:Int
   Field yDir1:Int
   Field xDir2:Int
   Field yDir2:Int
      
   Method DrawLightSource()
      DrawOval x1,y1,(x2-x1),(y2-y1)
   EndMethod
   
   Method DrawLightDirection()
      DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
      DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
      DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
      DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
   EndMethod
EndType


Type Wall
   Field x1:Int
   Field x2:Int
   Field x3:Int
   Field x4:Int
   Field y1:Int
   Field y2:Int
   Field y3:Int
   Field y4:Int
   
   Method DrawWall()
      DrawRect x1,y1,(x2-x1),(y2-y1)
   EndMethod   
EndType


Local Light:LightSource = New LightSource

For a = 0 To 2
Local Entity:Wall = New Wall
   Entity.x1 = Rnd(gx)
   Entity.x2 = Entity.x1+gx/10
   Entity.y1 = Rnd(gy)
   Entity.y2 = Entity.y1+gy/10
Next

SetGraphicsDriver GLMax2DDriver()
Graphics gx,gy,32,60
While Not KeyHit(key_escape)
Cls

Light.x1 = MouseX()-10
Light.x2 = Light.x1 + 20
Light.y1 = MouseY()-10
Light.y2 = Light.y1 + 20
Light.xSrc = MouseX()
Light.ySrc = MouseY()
Light.xDir1 = Entity.x1
Light.yDir1 = Entity.y1
Light.xDir2 = Entity.x2
Light.yDir2 = Entity.y2

Light.DrawLightSource()
Entity.DrawWall()
Light.DrawLightDirection()

Flip
Wend
End


Dann erzählt mir der Compiler aber ,dass Entity nicht existiere. Nun bin ich leicht verwirrt. Gibt es gar keine Methode um mit Hilfe von Types mehrere Objekte zu erstellen? möglichst in einer For Next Schleife?...Das erste Problem, dass ich hatte war, dass es kein "each" mehr gibt...sehr sehr großer Nachteil. Sad

Xeres

Moderator

BeitragSa, Feb 20, 2010 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Du erstellst zwar mit New eine neue Instanz, aber überschreibst diese in der Schleife dauernd. In BlitzMax musst du die Types selbst in Listen verwalten. Schau dir ein paar Tutorials auf bb.com an.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

OldSkool90

BeitragSa, Feb 20, 2010 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für den hinweis Smile
aber ich habe bereits ein tutorial angeschaut und da sah es für mich aus als würde ich in listen alles manuell eintragen müssen...was nicht wirklich praktisch ist o.O
kannst du mir ein ganz bestimmtes tutorial empfehlen? das ewige suchen macht mich ganz krank^^

Xeres

Moderator

BeitragSa, Feb 20, 2010 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich empfehle learning by doing ... was anderes hat sich noch nie als wirklich effektiv erwiesen.
Für diesen Fall ein Tipp: Überladung vom New Parameter.
BlitzMax: [AUSKLAPPEN]
Type TWall

Global list:TList = CreateList()

Method New()
TWall.list.AddLast(Self)
End Method

'[...]
End Type
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

OldSkool90

BeitragSa, Feb 20, 2010 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
okayokay als erstes danke ich dir^^
zum zweiten hoffe ich dass ich das anwenden kann. denn dieses mit self und so ist noch nicht in mein vokabular übergegangen^^
aber naja ich kanns auch später hinterfragen...erst tun dann fragen, so hab ich auch b3d gelernt Very Happy

mpmxyz

BeitragSa, Feb 20, 2010 17:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Zu der Fehlermeldung:
"Identifier not found", nicht wahr?
Das ist die Sache mit der Sichtbarkeit der Variablen bei Strict/SuperStrict:
BlitzMax: [AUSKLAPPEN]
SuperStrict 'Vorbildlich! Du gibst sogar immer den Variablentyp an. :-)
...
For a = 0 To 2
Local Entity:Wall = New Wall
...
Next
...
Entity.DrawWall() '<-Die Variable Entity gibt es nicht, da sie nur in der Schleife existiert.

Für Objektlisten kann man z.B. die "TList" nehmen.
Mit "For ObjektReferenz=EachIn Liste" kann man alle Objekte in der angegebenen Liste durchgehen.

Die Trennung von Objekt und Liste schafft zwar in diesem Fall ein wenig Mehrarbeit, hat aber einige Vorteile.
So können z.B. Objekte, die in keiner Liste sind, auch automatisch freigegeben werden, wenn sie nicht mehr gebraucht werden.

Außerdem könnte man sich für eine Liste entscheiden.
(Es gibt ja nicht nur Linked Lists)

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

OldSkool90

BeitragSa, Feb 20, 2010 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
wow so viel auf einmal Very Happy
ich glaube nicht, dass es primär daran liegt, dass entity local existiert...denn wenn ich entity global dimensioniere erhalte ich den gleichen fehler...was sehr(!) verwirrend ist Wink

mpmxyz

BeitragSa, Feb 20, 2010 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax: [AUSKLAPPEN]
Local Entity:Wall
For a = 0 To 2
Entity= New Wall
...
Next

Der Compilerfehler ist nun verschwunden.
Die Variablensichtbarkeit ist bei Strict/SuperStrict leicht anders als ohne Strict/SuperStrict/bei BlitzBasic:
Variablen, die in einer Schleife erstellt werden, bleiben in der Schleife.
Das "Global" in der Schleifendeklaration sorgt nur dafür, dass die Variable am Ende der Schleife, Funktion etc. nicht verschwindet, sondern beim nächsten Durchlauf immer noch ihren Wert behält.
Außerhalb ist sie aber wieder nicht sichtbar.
mfG
mpmxyz

BlitzMax: [AUSKLAPPEN]
SuperStrict
For Local i:Int=0 To 9
Local a:Int
Global b:Int
a=a+1
b=b+1
Print a+":"+b
Next
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

OldSkool90

BeitragSa, Feb 20, 2010 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
achsoooo O.o
na das muss man erstmal rausfinden xD
aber ich denke mein problem lässt sich tatsächlich nur mit listen lösen. mal schaun was sich machen lässt Smile

Midimaster

BeitragSa, Feb 20, 2010 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn dir der Ansatz von Xeres zu weit weg ist vom deinem Code, dann mach das Eintragen in die Liste doch so:

BlitzMax: [AUSKLAPPEN]
Global WallListe:TList
...
For a = 0 To 2
Local Entity:Wall = New Wall
Entity.x1 = Rnd(gx)
Entity.x2 = Entity.x1+gx/10
Entity.y1 = Rnd(gy)
Entity.y2 = Entity.y1+gy/10
ListAddLast WallListe, Entity
Next



Das Malen geht dann so:

BlitzMax: [AUSKLAPPEN]
For Local Entity:Wall = EachIn WallListe
Entity.Draw()
Next



Die Idee von Xeres ist natürlich die genialste, aber für den BMax-Typen-Neuling unverständlich. Es existieren unter BMax bereits standardmäßig einige Methoden, wenn du einen neuen Typ erfindest. Diese Methoden sind nicht sichtbar. Sie heißen z.b. New(), Delete(), Sort(), .... und machen etwas, wenn du z.B. schreibst...
BlitzMax: [AUSKLAPPEN]
Local Entity:Wall = New Wall 

Nun kannst du diese Methoden um eigene Zeilen erweitern, wenn Du die Methode im Typ hinschreibst. Genau das hat Xeres getan. Die Methode New() wird um die Zeile TWall.list.AddLast(Self) erweitert. Im Grunde bedeutet sie nix anderes, als dass jedes neue Element dieses Types gleich in eine Liste wandern soll.
  • Zuletzt bearbeitet von Midimaster am Sa, Feb 20, 2010 18:24, insgesamt 2-mal bearbeitet
 

OldSkool90

BeitragSa, Feb 20, 2010 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow DANKE!!! Das ist genau das Problem, das ich gerade mit den Listen hatte Very Happy

Midimaster

BeitragSa, Feb 20, 2010 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
@OldSchool90: ich habe gerade meine letzte post nochmal erweitert. Schau mal zurück!
 

OldSkool90

BeitragSa, Feb 20, 2010 18:27
Antworten mit Zitat
Benutzer-Profile anzeigen
achso^^ der code von Xeres hatte mich schon bissl verwirrt.
Jetzt habe ich deine Idee aufgegriffen und naja...es werden mehrere "Wall" Objekte angezeigt, ABER die Linien von der Lichtquelle zum Objekt hin sind nur einmalig also nicht bei allen 3 Wall dingern vorhanden...hier der neue Code

Code: [AUSKLAPPEN]
SuperStrict

Global gx:Int,gy:Int,a:Int

gx = 1600
gy = 1200

Type LightSource
   Field x1:Int
   Field x2:Int
   Field y1:Int
   Field y2:Int
   Field xSrc:Int
   Field ySrc:Int
   Field xDir1:Int
   Field yDir1:Int
   Field xDir2:Int
   Field yDir2:Int
      
   Method DrawLightSource()
      DrawOval x1,y1,(x2-x1),(y2-y1)
   EndMethod
   
   Method DrawLightDirection()
      DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
      DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
      DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
      DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
   EndMethod
EndType

Global WallList:TList = CreateList()
Type Wall
   
   Field x1:Int
   Field x2:Int
   Field x3:Int
   Field x4:Int
   Field y1:Int
   Field y2:Int
   Field y3:Int
   Field y4:Int
      
   Method DrawWall()
      DrawRect x1,y1,(x2-x1),(y2-y1)
   EndMethod   
EndType


Local Light:LightSource = New LightSource

For a = 0 To 2
   Local Entity:Wall = New Wall
      Entity.x1 = Rnd(gx)
      Entity.x2 = Entity.x1+gx/10
      Entity.y1 = Rnd(gy)
      Entity.y2 = Entity.y1+gy/10
      ListAddLast WallList, Entity
Next

SetGraphicsDriver GLMax2DDriver()
Graphics gx,gy,32,60
While Not KeyHit(key_escape)
Cls

Light.x1 = MouseX()-10
Light.x2 = Light.x1 + 20
Light.y1 = MouseY()-10
Light.y2 = Light.y1 + 20
Light.xSrc = MouseX()
Light.ySrc = MouseY()
For Local Entity:Wall = EachIn WallList
   Light.xDir1 = Entity.x1
   Light.yDir1 = Entity.y1
   Light.xDir2 = Entity.x2
   Light.yDir2 = Entity.y2
Next

Light.DrawLightSource()

For Local Entity:Wall = EachIn WallList
   Entity.DrawWall()
   Light.DrawLightDirection()
Next

Flip
Wend
End

Midimaster

BeitragSa, Feb 20, 2010 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
kein wunder...

du hast zwar 3 Wände erstellt. Aber dein Lichtobjekt gibt es ja nur 1x und es kann auch nur 1 Satz xDir1,...
aufnehmen.

Du scannst zwar alle Wände durch, aber am Ende weiss das Lichtobjekt nur die Koordinaten der letzten Wand...

Hier musst du dir jetzt was überlegen, wie sich das Lichtobjekt mehrere Sätze Lichtrichtungen zu allen Wänden merken kann...oder du machst das erst später in Echtzeit: Scannst alle Wände durch und berechnest die Richtung vom Licht hierher (geht aber auch nur gut, solange es nur 1 Licht gibt...)
 

OldSkool90

BeitragSa, Feb 20, 2010 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
ups ich hab ja xDir in den LightSource Type geschrieben xDD kein wunder.
also müsste ich diese auch in eine Liste packen oder xDir und yDir in den Wall Type schreiben oder?

Midimaster

BeitragSa, Feb 20, 2010 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
das bringt dich nicht wirklich weiter. Warum willst du den die Beziehungen Xdir,... überhaupt speichern? Du könntest doch bei der DrawLightDirection() einfach auch alle Wände durchscannen:

BlitzMax: [AUSKLAPPEN]
Method DrawLightDirection()
For Local Entity:Wall = EachIn WallListe
xDir1=Entity.X1
yDir1=Entity.Y1
....
DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
....
Next
End Method
 

OldSkool90

BeitragSa, Feb 20, 2010 18:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay das geht^^ Hätte nicht gedacht, dass man das so machen kann...Ich muss wohl noch mit Methoden und Listen üben um solche Denkfehler nicht noch einmal zu machen.
Wenn ich jetzt noch mit drawpoly die schatten zeichne und alles klappt mit den types, bin ich überwältigt Very Happy

Hier der neue Code bisher ohne Schatten:
Code: [AUSKLAPPEN]
SuperStrict

Global gx:Int,gy:Int,a:Int

gx = 1600
gy = 1200

Global WallList:TList = CreateList()

Type LightSource
   Field x1:Int
   Field x2:Int
   Field y1:Int
   Field y2:Int
   Field xSrc:Int
   Field ySrc:Int
   Field xDir1:Int
   Field yDir1:Int
   Field xDir2:Int
   Field yDir2:Int
      
   Method DrawLightSource()
      DrawOval x1,y1,(x2-x1),(y2-y1)
   EndMethod
   
   Method DrawLightDirection()
      For Local Entity:Wall = EachIn WallList
         xDir1 = Entity.x1
         yDir1 = Entity.y1
         xDir2 = Entity.x2
         yDir2 = Entity.y2
      
         DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
         DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
         DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
         DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
      next
   EndMethod
EndType


Type Wall
   
   Field x1:Int
   Field x2:Int
   Field x3:Int
   Field x4:Int
   Field y1:Int
   Field y2:Int
   Field y3:Int
   Field y4:Int
      
   Method DrawWall()
      DrawRect x1,y1,(x2-x1),(y2-y1)
   EndMethod   
EndType


Local Light:LightSource = New LightSource

For a = 0 To 2
   Local Entity:Wall = New Wall
      Entity.x1 = Rnd(Rnd(gx))
      Entity.x2 = Entity.x1+gx/10
      Entity.y1 = Rnd(Rnd(gy))
      Entity.y2 = Entity.y1+gy/10
      ListAddLast WallList, Entity
Next

SetGraphicsDriver GLMax2DDriver()
Graphics gx,gy,32,60
While Not KeyHit(key_escape)
Cls

Light.x1 = MouseX()-10
Light.x2 = Light.x1 + 20
Light.y1 = MouseY()-10
Light.y2 = Light.y1 + 20
Light.xSrc = MouseX()
Light.ySrc = MouseY()

Light.DrawLightSource()

For Local Entity:Wall = EachIn WallList
   Entity.DrawWall()
   Light.DrawLightDirection()
Next

Flip
Wend
End


Vielen Dank an Xeres, mpmxyz und besonders an Midimaster Smile
 

OldSkool90

BeitragSa, Feb 20, 2010 22:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier mal ein Update:
(Bei 30 oder 40 Objekten sinkt die Leistung jedoch)
Code: [AUSKLAPPEN]
SuperStrict

Global gx:Int,gy:Int,a:Int
Global ShadowPoly1:Float [] 'Wie ich es doch hasse xD
Global ShadowPoly2:Float []
Global ShadowPoly3:Float []
Global ShadowPoly4:Float []
Global ShadowPoly5:Float []
Global ShadowPoly6:Float []
Global ShadowPoly7:Float []
Global ShadowPoly8:Float []
Global LineToggle:Int = 0

gx = 1600
gy = 1200

Global WallList:TList = CreateList()

Type LightSource
   Field x1:Int
   Field x2:Int
   Field y1:Int
   Field y2:Int
   Field xSrc:Float
   Field ySrc:Float
   Field xDir1:Float
   Field yDir1:Float
   Field xDir2:Float
   Field yDir2:Float
      
   Method DrawLightSource()
      DrawOval x1,y1,(x2-x1),(y2-y1)
   EndMethod
   
   Method DrawLightDirection()
      For Local Entity:Wall = EachIn WallList
         xDir1 = Entity.x1
         yDir1 = Entity.y1
         xDir2 = Entity.x2
         yDir2 = Entity.y2
         
         ShadowPoly1 = [xDir1,yDir1,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000),(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)]
         ShadowPoly2 = [xDir1,yDir1,xDir2,yDir1,(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)]
         ShadowPoly3 = [xDir1+gx/10,yDir1+gy/10,(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000),(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)]
         ShadowPoly4 = [xDir1,yDir1+gy/10,xDir1+gx/10,yDir1+gy/10,(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)]
         ShadowPoly5 = [xDir1,yDir1,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000),(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)]
         ShadowPoly6 = [xDir1,yDir1+gy/10,xDir1,yDir1,(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)]
         ShadowPoly7 = [xDir1+gx/10,yDir1,(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000),(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)]
         ShadowPoly8 = [xDir1+gx/10,yDir1+gy/10,xDir1+gx/10,yDir1,(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)]
         
      If LineToggle = 1
         DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
         DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir1+(yDir1-ySrc)*1000)
         DrawLine xSrc,ySrc,(xDir2+(xDir2-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
         DrawLine xSrc,ySrc,(xDir1+(xDir1-xSrc)*1000),(yDir2+(yDir2-ySrc)*1000)
      EndIf
      
         SetColor 75,75,75
            DrawPoly ShadowPoly1
            DrawPoly ShadowPoly2
            DrawPoly ShadowPoly3
            DrawPoly ShadowPoly4
            DrawPoly ShadowPoly5
            DrawPoly ShadowPoly6
            DrawPoly ShadowPoly7
            DrawPoly ShadowPoly8
         SetColor 255,255,255
         
      Next
   EndMethod
EndType


Type Wall
   
   Field x1:Int
   Field x2:Int
   Field x3:Int
   Field x4:Int
   Field y1:Int
   Field y2:Int
   Field y3:Int
   Field y4:Int
      
   Method DrawWall()
      DrawRect x1,y1,(x2-x1),(y2-y1)
   EndMethod   
EndType


Local Light:LightSource = New LightSource

For a = 0 To 5
   Local Entity:Wall = New Wall
      Entity.x1 = Rnd(gx)
      Entity.x2 = Entity.x1+gx/10
      Entity.y1 = Rnd(gy)
      Entity.y2 = Entity.y1+gy/10
      ListAddLast WallList, Entity
Next

SetGraphicsDriver GLMax2DDriver()
Graphics gx,gy,32,60
SetClsColor 155,155,155
HideMouse()
While Not KeyHit(key_escape)
Cls

Light.x1 = MouseX()-10
Light.x2 = Light.x1 + 20
Light.y1 = MouseY()-10
Light.y2 = Light.y1 + 20
Light.xSrc = MouseX()
Light.ySrc = MouseY()

Light.DrawLightSource()

For Local Entity:Wall = EachIn WallList
   Light.DrawLightDirection()
Next
For Local Entity:Wall = EachIn WallList
   Entity.DrawWall()
Next

Flip
Wend
End

Nicdel

BeitragSa, Feb 20, 2010 22:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht schon gut aus. Als nächstes solltest du nur noch die Schatten zeichnen, die wirklich sichtbar sind, das sollte die Leistung steigern.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

mpmxyz

BeitragSa, Feb 20, 2010 22:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Geschwindigkeitsproblem kommt von "DrawPoly". Das ist nicht gerade die schnellste Funktion.

Übrigens: Die Arrays kannst du auch lokal in der Methode "DrawLightDirection" deklarieren, da die nur dort genutzt werden.
Dann gibt es keinen Grund, etwas zu hassen. Wink

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group