Illegal Memory Adress
Übersicht

martin_moehlerBetreff: Illegal Memory Adress |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich schreibe momentan ein Mapeditor. Ich kann momentan ein Terrain laden, Meshes laden und diese texturieren. Wenn ich das Terrain geladen habe und mich dann bewege (rechte Maustaste gedrückt halten um die Kamera zu drehen und und mit w a s d die Kamera bewegen) kommt es oft zu der im Titel genannten Fehlermeldung. Allerdings auch nicht immer und nicht immer an der gleichen Stelle. Wenn ich nur ein Mesh geladen habe passiert das nicht. Den Quelltext zu posten wäre sinnlos, denn ich denke nicht, dass ihr Lust habt euch in so viel Text einzulesen. Ich würde mich freuen wenn ihr ein paar Vorschläge hättet wie ich das Problem finden und lösen könnte, da der Debugger nichts brauchbares liefert. Mit freundlichen Grüßen Martin |
||
da_poller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
eine zeile an der der debugger meldet und den umliegenden code(funktion) wäre evlt hilfreich | ||
martin_moehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Fehler kommt beim Rendern. Dazu zu sagen ist vieleicht noch, dass ich GUI (BlitzUI) benutze. Ich kann sie aber nicht ausschalten um zu überprüfen ob es an ihr liegt, da ich sie benötige um das Terrain zu laden.
Danke für alle Antworten! Code: [AUSKLAPPEN] FlushMouse() While Not KeyHit(1) ; Für das mehrmalige Abfragen der Maustasten MouseDown1 = MouseDown(1) MouseDown2 = MouseDown(2) MouseHit1 = MouseHit(1) MouseHit2 = MouseHit(2) ; ------------------------------------------ ; ------------- Kamerabewegung ------------- ; ------------------------------------------ If MouseDown2 And MenuOpen = 0 XSpeed# = MouseXSpeed() YSpeed# = MouseYSpeed() TurnEntity cam_x, 0, -(XSpeed# / 3 ), 0 TurnEntity cam_y, (YSpeed# / 3), 0 , 0 EndIf If MenuOpen = 0 If KeyDown (31) MoveEntity cam_y,0,0,-.5 If KeyDown (17) MoveEntity cam_y,0,0,.5 If KeyDown (30) MoveEntity cam_y,-.5,0,0 If KeyDown (32) MoveEntity cam_y,.5,0,0 End If ; Dieser Trick ist notwendig um die Kamerafahrt benutzerfreundlicher zu machen!! =) EntityParent cam_y,0 PositionEntity cam_x,EntityX(cam_y),EntityY(cam_y),EntityZ(cam_y) EntityParent cam_y,cam_x ; ------------------------------------------ ; ---------- Objekte verschieben ----------- ; ------------------------------------------ If mesh And terrain If KeyDown (208) MoveEntity mesh,0,0,-.5 If KeyDown (200) MoveEntity mesh,0,0,.5 If KeyDown (203) MoveEntity mesh,-.5,0,0 If KeyDown (205) MoveEntity mesh,.5,0,0 If SetOnTop = 1 Then PositionEntity mesh,EntityX(mesh),TerrainY(terrain ,EntityX(mesh),0,EntityZ(mesh)),EntityZ(mesh) SendMessage(txtMeshX,"TM_SETTEXT",Str(EntityX(mesh))) SendMessage(txtMeshY,"TM_SETTEXT",Str(EntityY(mesh))) SendMessage(txtMeshZ,"TM_SETTEXT",Str(EntityZ(mesh))) End If ; ------------------------------------------ ; ------------ Objekte anwählen ------------ ; ------------------------------------------ If KeyDown(29) Or KeyDown(157) CamPic = CameraPick(camMain,MouseX(),MouseY()) If MouseHit1 Or MouseHit2 If mesh EntityColor mesh,255,255,255 Mesh=CamPic If Mesh EntityColor mesh,0,255,0 ; Überprüfen welches Obj ausgewählt ist und dessen Werte an die Sidebar übergeben For i = 0 To MeshCount If Mesh = Meshes(i,0) MeshID=i End If Next SendMessage(scbMeshScle,"SM_SETVALUE",Meshes(MeshID,1)) SendMessage(lblMeshScle,"LM_SETTEXT","Objekt Scalierung: "+ (ScaleCalc(Meshes(MeshID,1))+"%")) SendMessage(txtMeshX,"TM_SETTEXT",""+EntityX(Meshes(MeshID,0))) SendMessage(txtMeshY,"TM_SETTEXT",""+EntityY(Meshes(MeshID,0))) SendMessage(txtMeshZ,"TM_SETTEXT",""+EntityZ(Meshes(MeshID,0))) Else SendMessage(winPopUp,"WM_MINIMISE") MenuOpen=0 End If EndIf ; ------------------------------------------ ; --------------- PopUp-Menu --------------- ; ------------------------------------------ If MouseHit2 And CamPic <> 0 SendMessage(winPopUp,"WM_MAXIMISE") SendMessage(winPopUp,"WM_SETPOS",MouseX(),MouseY()) SendMessage(mnuPopUp,"MM_OPEN") MenuOpen = 1 End If End If ; ------------------------------------------ ; --------------- GUI-Events --------------- ; ------------------------------------------ Cls RenderWorld UpdateGUI() Select app\Event Case EVENT_MENU Select app\MenuEvent Case mnuMesh mnuMesh_Open Case mnuTerr mnuTerr_Open Case mnuExit mnuExit_Open Case mnuWreFrm mnuWreFrm_Open Case mnuPosY mnuPosY_Open Case mnuPopUpTex MenuOpen = 0 mnuPopUpTex_Open Case mnuPopUpDel MenuOpen = 0 Case mnuAlpha mnuAlpha End Select Case EVENT_GADGET Select app\GadgetEvent Case scbMeshScle ScaleMeshes Case cmdTex TexGive Case cmdLoad TexLoad Case cmdDel TexDelete Case cmdOK TexOK Case cmdCancel TexCancel Case cmbTex TexCmbClick Case lstTex TexLstClick End Select End Select ; Das PopUp-Menu wieder schließen und die Variablen anpassen If MouseHit1 And MenuOpen = 0 SendMessage(winPopUp,"WM_MINIMISE") End If UpdateWorld DrawMouse() ResetEvents() Flip Wend |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so ein fehler beim rendern kommt normalerweise daher das man
1. entweder mehr triangles / vertices auf einem mesh hat als man haben kann (65535 auf neueren karten. GeForce 2 / GF4 MX haben ein maximum von 32768 triangles) 2. man mehr texturespeicher im viewfrustrum (sichtbereich, egal ob verdeckt oder nicht) braucht, als die grafikkarte grafikspeicher hat |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
martin_moehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok danke für die Antwort! Da meine Grafikkarte tatsächlich etwas alt ist, probiere ich mich mal ein bisschen an TerrainDetail =)
Außerdem werde ich es mal an anderen, neueren PC`s testen um deine Lösung zu bestätigen. Ich melde mich dann wieder. Gruß Martin |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group