Memory-acess-valiation

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Todeskop

Betreff: Memory-acess-valiation

BeitragDi, Dez 26, 2006 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe ein großes schreckliches problem...
wenn ich meine selbst gemachte umgebungs-Demo starte kommt nach ca. 5min Memory-acess-valiation.......
Und zwar immer an der stelle Renderworld.
Woran kann dies liegen..
Ich bitte und danke für schnelle Antworten...

BladeRunner

Moderator

BeitragDi, Dez 26, 2006 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne hellseherische Fähigkeiten können wir das nicht wissen.

~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Darthshoot

BeitragDi, Dez 26, 2006 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will auch mal probieren zu helfen auch wenns jetzt vielleicht total dumm ankommt... aber ich machs trotzdem mal ^^ *g*

Da Fehlt irgendeine Datei? Wenn ich ne executable mache und was net da is was geladen wird, kommt dieser Fehler. Wird nach 5 Minuten irgendwas geladen, was du net im Ordner hast?
 

Todeskop

BeitragDi, Dez 26, 2006 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
also ich habe alles im ordner wolld ihr den code hier ist er:

Code: [AUSKLAPPEN]
Graphics3D 1024,768,32,2


AppTitle "Todeskop´s 1st Demo"
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Text GraphicsWidth()/2,GraphicsHeight()/2,"loading...",True,False
Flip



Dim baum(201)
Dim baum2(201)
Dim baum3(201)
Dim grass(201)


camera = CreateCamera()
CameraRange camera,1,1500000
EntityType camera,1
EntityRadius camera,4
CameraFogRange camera,100,25000
CameraFogColor camera,7,141,206

snd=LoadSound("Document 1.wav")



Type CloudField
   Field mesh#
   Field PosX#
   Field PosY#
   Field PosZ#
   Field alpha#
End Type

   Global qut = 750

For i = 0 To qut
   Cloud.Cloudfield = New CloudField
   Cloud\mesh = CreateCloud("cld2.png")
   ScaleEntity Cloud\mesh,35050,35050,35050
   PositionEntity Cloud\mesh,Rnd(-400000,400000),Rnd(90000,100000),Rnd(-400000,400000)
   EntityAlpha Cloud\mesh,0.3
Next

Dim cosinus(640)
position = 0
For c = 0 To 640
 cosinus(c) = Cos((115*3.14159265358 * c) / 320) * 32 + 32
Next
Dim div10(320)
For i=0 To 320
 div10(i)=i/10
Next
Dim f3(255),f45(255),f5(255)
For i=0 To 255
 f3(i)=3*i
 f45(i)=4.5*i
 f5(i)=5*i
Next
mywater=CreateTexture(32,32,9) ; used 4 texture on water
mywater2=CreateTexture(32,32,9) ; used 4 watershade blend on ground
Gosub water
water=CreateTerrain(64)
ScaleTexture mywater,0.01,0.01
ScaleTexture mywater2,20,20
EntityTexture water, mywater,0
ScaleEntity water,50000*32,50000*32,50000*32
PositionEntity water,-800000,4000,-600000
EntityAlpha water,0.6
EntityFX water,17+8
EntityType water,4

terrain=LoadMesh("lowterrain.3ds")
PositionEntity terrain,0,27000,0
ScaleEntity terrain,400,350,400
EntityType terrain,2
EntityFX terrain,16
PositionEntity camera,63006,11860,-8218.2
wasserboden=CreatePlane(2)
kies=LoadTexture("IM000105.jpg",256)
EntityType wasserboden,3
EntityFX wasserboden,16+8

CreateListener(camera)
EntityTexture wasserboden,mywater2,0,1
EntityTexture wasserboden,kies,0,2
;bäume
baum(0)=LoadMesh("baum.3ds")
tex1=LoadTexture("baum.jpg",260)
EntityTexture baum(0),tex1

baum2(0)=LoadMesh("baum2.3ds")

tex2=LoadTexture("baum2.jpg",260)
EntityTexture baum2(0),tex2
Himmel=LoadMesh("himmel.3ds")
   EntityOrder Himmel,10

ScaleEntity himmel,1000,1000,1000
baum3(0)=LoadMesh("baum3.3ds")
grass(0)=LoadSprite("graß.png",4+2+256)
ScaleEntity grass(0),1500,1500,1500
SpriteViewMode grass(0),4
EntityFX grass(0),16+1
tex3=LoadTexture("baum3.jpg",260)
EntityTexture baum3(0),tex3
ScaleEntity baum(0),100,100,100
ScaleEntity baum2(0),100,100,100
ScaleEntity baum3(0),100,100,100
EntityType baum(0),5
EntityRadius baum(0),1
EntityType baum2(0),5
EntityRadius baum2(0),1
EntityType baum3(0),5
EntityRadius baum3(0),1
EntityType grass(0),5
EntityRadius grass(0),160

   PositionEntity baum(0),Rnd(-200000,200000),Rnd(10000,15004),Rnd(-200000,200000)
      PositionEntity baum2(0),Rnd(-200000,200000),Rnd(10000,15040),Rnd(-200000,200000)
         PositionEntity baum3(0),Rnd(-200000,200000),Rnd(10000,15004),Rnd(-200000,200000)

schiff=LoadMesh("schiff.3ds")
ScaleEntity schiff,40,30,30
PositionEntity schiff,0,15000,0
EntityType schiff,6


For i = 0 To 200

   baum(i) = CopyEntity(baum(0))
   baum2(i) = CopyEntity(baum(0))
   baum3(i) = CopyEntity(baum(0))
   grass(i) = CopyEntity(grass(0))

      PositionEntity baum(i),Rnd(-150000,150000),Rnd(30000,40000),Rnd(-150000,150000)
      PositionEntity baum2(i),Rnd(-150000,150000),Rnd(30000,40000),Rnd(-150000,150000)
         PositionEntity baum3(i),Rnd(-1500000,1500000),Rnd(30000,40000),Rnd(-150000,150000)
 
Next

zoom#=1
sound=Load3DSound("water1.wav")
ChannelVolume ChannelID, 0.5
ambi#=90
va=1

PlaySound snd
HidePointer
While Not KeyDown(1)
PositionEntity Himmel,EntityX(camera),EntityY(camera)-3000,EntityZ(camera)
If EntityY(camera)<3999 Then
CameraFogMode camera,1
Else
CameraFogMode camera,0
EndIf
If Not EntityCollided(schiff,4) TranslateEntity schiff,0,-100,0
   If Not EntityCollided(camera,2) TranslateEntity camera,0,-10,0

If va=1 Then
  ambi#=ambi#+0.05
  If ambi#=230 Then va=0
ElseIf va=0 Then   
 ambi#=ambi#-0.05
If ambi#=20 Then va=1
EndIf

      For Cloud.Cloudfield = Each CloudField
         PointEntity Cloud\mesh,camera
         If cloud\alpha <= 0.6 cloud\alpha = cloud\alpha + 0.02
         EntityAlpha cloud\mesh,cloud\alpha
         dist# = EntityDistance#(camera,Cloud\Mesh)
         If dist < 20 EntityAlpha Cloud\mesh,dist/35
         If dist < 20 RotateEntity cloud\mesh,1,1,1
         If KeyDown(2) Then EntityAlpha cloud\mesh,0 : cloud\alpha = 0
          Next




If MouseDown(2) Then zoom#=zoom#+0.1
If Not MouseDown(2) zoom#=1
If KeyHit(3) Then
WireMode = Not WireMode
WireFrame WireMode
End If
If KeyDown(57) And KeyDown(17) MoveEntity camera,0,0,1000
If KeyDown(17) And MouseDown(1) MoveEntity camera,0,0,1000
If wiremode=1 AmbientLight 0,255,0
If wiremode=0 AmbientLight ambi#,ambi#,ambi#
 CameraZoom camera,zoom#

 

   If KeyDown(30) MoveEntity camera,-1,0,0
If KeyDown(32) MoveEntity camera,1,0,0
If KeyHit(29) TranslateEntity camera,0,50,0
  If EntityDistance(camera,water)<20 EmitSound(sound,water)
              Mx#=MouseXSpeed()
        My#=MouseYSpeed()
  Mz#=MouseZSpeed()
        TurnEntity camera,My#,-Mx/2,0

        MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

          If KeyHit(31)=1 And speed#<0 speed#=speed-5
      If KeyDown(17) And speed#<3 Then speed=speed+5
        If speed>10 Then speed=10
        If speed>0 Then speed=speed-0.3
        If KeyDown(31)=1 And speed#<1 Then speed=speed-0.6
        If speed<0 Then speed=speed+0.3
        If speed<-3 Then speed=-3
      MoveEntity camera,0,0,speed#

Collisions 1,2,2,2
Collisions 1,3,2,2
Collisions 5,2,2,1
Collisions 5,4,2,1
Collisions 5,3,2,1
Collisions 1,6,2,2
Collisions 6,4,2,2
Collisions 7,3,2,3
   loeschen()
schwerkraft()
   loeschen3()
schwerkraft3()   
loeschen2()
schwerkraft2()
   loeschen4()
schwerkraft4()


Gosub water
 UpdateWorld
RenderWorld


Flip

Wend
End



Function CreateCloud(path$)
   m = CreateMesh()
   b = LoadBrush(path,2)
   s = CreateSurface( m,b )
   
   v0 = AddVertex(s,-1,1,0,0,1)
   v1 = AddVertex(s,1,1,0,1,1)
   v2 = AddVertex(s,1,-1,0,1,0)
   v3 = AddVertex(s,-1,-1,0,0,0)
   
   AddTriangle s,v0,v1,v2
   AddTriangle s,v0,v2,v3
   
   EntityFX m,16+1+32
   Return m
End Function

Function schwerkraft()

   For i=0 To 200
      If baum(i)<>0
   
      If Not EntityCollided(baum(i),2)
      TranslateEntity baum(i),0,-10000,0
      
         End If
       End If
   Next
End Function


Function loeschen()
   For i = 0 To 200

      If baum(i)<>0
      If EntityCollided(baum(i),4)
         FreeEntity baum(i)
         baum(i) = 0
         
      End If
      End If
   Next
End Function
Function schwerkraft3()

   For i=0 To 200
      If baum2(i)<>0
   
      If Not EntityCollided(baum2(i),2)
      TranslateEntity baum2(i),0,-10000,0
         End If
       End If
   Next
End Function

Function loeschen2()
   For i = 0 To 200

      If baum2(i)<>0
      If EntityCollided(baum2(i),4)
         FreeEntity baum2(i)
         baum2(i) = 0
      End If
      End If
   Next
End Function
Function schwerkraft2()

   For i=0 To 200
      If baum3(i)<>0
      If Not EntityCollided(baum3(i),2)
      TranslateEntity baum3(i),0,-10000,0
         End If
       End If
   Next
End Function

Function loeschen3()
   For i = 0 To 200

      If baum3(i)<>0
      If EntityCollided(baum3(i),4)
         FreeEntity baum3(i)
         baum3(i) = 0
      End If
      End If
   Next
End Function
Function schwerkraft4()

   For i=0 To 200
      If grass(i)<>0
      If Not EntityCollided(grass(i),2)
      TranslateEntity grass(i),0,-10000,0
         End If
       End If
   Next
End Function

Function loeschen4()
   For i = 0 To 200

      If grass(i)<>0
      If EntityCollided(grass(i),4)
         FreeEntity grass(i)
         grass(i) = 0
      End If
      End If
   Next
End Function

.water
 wave1% = wave1% + 4
 wave2% = wave2% + 2
 If wave1% >= 320 Then wave1% = 0
 If wave2% >= 320 Then wave2% = 0
 SetBuffer TextureBuffer(mywater)
 LockBuffer
   For y% = 0 To 319 Step 10
    y10=div10(y)
    d = cosinus(y + wave2) + cosinus(Y + wave2)
    For x% = 0 To 319 Step 10
     x10=div10(x)
     f = 1 + Abs(((cosinus(x + wave1) + cosinus(x + y) + d) / 8) - 16)
     rr=105-f3(f)
     If rr<0 Then rr=0
     gg=185-f45(f)
     If gg<0 Then gg=0
     bb=195-f5(f)
     If bb<0 Then bb=0
    WritePixelFast x10,y10,((rr Shl 16) Or (gg Shl 8) Or bb)
   Next
  Next
 UnlockBuffer
CopyRect 0,0,32,32,0,0, TextureBuffer(mywater), TextureBuffer(mywater2)
SetBuffer BackBuffer()
Return


~Edit~
der sagt noch als fehlermeldung:
0x009954fe
0x000000040
coudn´t be written...

darth

BeitragDi, Dez 26, 2006 16:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ich les mir immer seitenlange codes von anderen durch... das macht extrem spass!
trotzdem hab ichs mal getan... in anbetracht der tatsache, dass es erst nach 5min auftaucht, sollte der fehler wahrscheinlich nicht im ganzen erstellblock liegen (es sei denn er braucht 5min dazu -.-) also hab ich den mal weggelassen.
aber jetzt kommts: ich finde einfach so keinen fehler... ich kann bloss vermuten.
du löschts VIELLEICHT (... keine tests etc ...) etwas, das du nachher wieder zeichnen lassen möchtest (freeentity zb) wäre das möglich?
Diese Signatur ist leer.
 

Todeskop

BeitragDi, Dez 26, 2006 16:58
Antworten mit Zitat
Benutzer-Profile anzeigen
vielleicht hängts mit den buffern zusammen da dieser mal geunlockt wird
und so... aber ich gucke mal.....
Ps: ich finde es besondes komisch das es die fehlermeldung immer Bei RENDERWORLD bringt....und dazu nen ganzen speicherfehler(wie oben beschrieben)....

~edit~

Könnte es auch sein das es an meinen Speicher liegt.....???

Axe

BeitragDi, Dez 26, 2006 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würd den Code ja gerne mal durchtesten, aber mir fehlen die ganzen Dateien. Kannst du die mal schnell zippen und hochladen (oder schick mir die Zip als Mailanhang an mail@axe.de.nr)?
 

Dreamora

BeitragDi, Dez 26, 2006 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, der Code ist sicher nicht gedacht so zu funktionieren oder?

CamRange 1 - 1,5 Mio?
Setz das Mal auf 15000 (totales Max) runter. Denn sonst kannst du unter Garantie davon ausgehen das der Tiefenbuffer austickt (-> Dinge erscheinen vor anderen obwohl sie das garnicht dürften und so)

Hinzu kommt das Aufgrund von eben dieser Sichtweite auch einfach dein Meshbuffer austickt, denn du schiebst die ganze Zeit Mesh Clone wieder in in den Sichtbereich so wie ich das sehe.

Renderworld MAV deuten normalerweise eindeutig darauf hin, das man mit AddVertex / AddTriangle / CopyEntity / AddMesh zuviele vertices / triangles auf eine Surface gepackt hat.

Das passiert recht schnell, denn bei Triangles ist auf so manch einer Karte bei 16 * 1024 Triangles Schluss. (auf higher end karten ist es 64*1024). Für Vertices gilt immer 64*1024.


Es gibt allerdings auch eine zweite Variante die zu interessanten Fehlern führen könnte: Deine Emitsound Routine. "Wenn ich zu nahe am wasser bin, dann emitsound, egal ob der alte schon läuft oder net"

Alles in allem interessanter Code. Hat hier im FAQ Bereich einen Guide wie man Code strukturiert. kannst ja deinen Mal anhängen als mahnendes Beispiel wie er NICHT aussehen sollte. (wenn ich Ctrl-F brauche um die Mainloop zu finden ist der Code schlecht bis X formatiert).
Vielleicht lehrt dich dieser MAV jedoch, den Code das nächste Mal so zu strukturieren, dass du auch eine Chance hast den Bug zu finden. Noch häufiger werden dich die Leute wohl kaum darauf aufmerksam machen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Todeskop

BeitragDi, Dez 26, 2006 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
ähh sorry geht schlecht ist 30MB groß...

Axe

BeitragDi, Dez 26, 2006 18:13
Antworten mit Zitat
Benutzer-Profile anzeigen
naja, wenn es um das Empfangen geht ist es für mich kein Problem hab DSL6000 Flat.
 

Todeskop

BeitragDi, Dez 26, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
ne aber ich kann höchstens 20MB verschicken aber hast du icq darüber könnten wa das eben machen
 

Todeskop

BeitragDi, Dez 26, 2006 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe rausgefunden das dieses sinuserstellen-als textur der fehler war ich finde sie aber super schön die textur und will ungern eine andere nehmen also meine frage was ist an dem teil des codes falsch:

Code: [AUSKLAPPEN]
Dim cosinus(640)
position = 0
For c = 0 To 640
 cosinus(c) = Cos((115*3.14159265358 * c) / 320) * 32 + 32
Next
Dim div10(320)
For i=0 To 320
 div10(i)=i/10
Next
Dim f3(255),f45(255),f5(255)
For i=0 To 255
 f3(i)=3*i
 f45(i)=4.5*i
 f5(i)=5*i
Next
mywater=CreateTexture(32,32,9)
mywater2=CreateTexture(32,32,9)

;_________________
Code: [AUSKLAPPEN]
.water
 wave1% = wave1% + 4
 wave2% = wave2% + 2
 If wave1% >= 320 Then wave1% = 0
 If wave2% >= 320 Then wave2% = 0
 SetBuffer TextureBuffer(mywater)
 LockBuffer
   For y% = 0 To 319 Step 10
    y10=div10(y)
    d = cosinus(y + wave2) + cosinus(Y + wave2)
    For x% = 0 To 319 Step 10
     x10=div10(x)
     f = 1 + Abs(((cosinus(x + wave1) + cosinus(x + y) + d) / 8) - 16)
     rr=105-f3(f)
     If rr<0 Then rr=0
     gg=185-f45(f)
     If gg<0 Then gg=0
     bb=195-f5(f)
     If bb<0 Then bb=0
    WritePixelFast x10,y10,((rr Shl 16) Or (gg Shl 8) Or bb)
   Next
  Next
 UnlockBuffer
CopyRect 0,0,32,32,0,0, TextureBuffer(mywater), TextureBuffer(mywater2)
SetBuffer BackBuffer()
Return

;____________________________________________________
danke für eure hilfe


~edit~
ups doppelpost sorry nicht bemerkt das ich da schon einen hatte...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group