Seite 1 von 1

Absturz bei SetMeshData() bei mehr als 5 Triangels...

Verfasst: 13.02.2005 02:38
von Ground0
Hallo

So hab jetzt mehrere Tage das 3D zeuchs Studiert aber irgendwie will das bei mir nicht :?

Hier mal der AnfangsCode....

Code: Alles auswählen


;-************************************************
;-Font Deklarierung
BigFont = LoadFont(1,"Arial",38)

;-************************************************
;-Procedure Routine Deklaration
Declare Bild_Refresh()

;-************************************************
;-Initialisierung der Engine
If InitEngine3D() And InitKeyboard() And InitMouse() And InitNetwork() And InitSprite() And InitSprite3D() And InitSound()
  OpenScreen(640,480,32,"Mysteri-House Test V0.001")
  ;-**********************************************
  ;-Mesh Textur Erstellen, Datenauslesen und Kreieren
  CreateTexture(0,100,100)
  StartDrawing(TextureOutput(0))
  Box(0,0,100,100,$00FFFF)
  FrontColor($00,$00,$FF)
  DrawingMode(1)
  DrawingFont(BigFont)
  Locate(0,0)
  DrawText("M.H.")
  StopDrawing()
  
  CreateMaterial(0, TextureID(0))
  CreateMesh(0)
  SetMeshData(0,#PB_Mesh_Vertices     ,?Ecken            , 8) 
  SetMeshData(0,#PB_Mesh_Triangles    ,?Qubus_1          , 6) 
  SetMeshData(0,#PB_Mesh_UVCoordinates,?TexturKoordinaten, 1)
  
  CreateEntity(1, MeshID(0), MaterialID(0),0,0,-3)
  
  CreateCamera(0, 0, 0, 100, 100)
  CameraLocate(0,0,0,10)
  Repeat
    ExamineKeyboard()
    Select WindowEvent()
      Case #PB_Event_CloseWindow
        Quit = #True
    EndSelect
    RotateEntity(1, 1, 1, 0)
    Bild_Refresh()
    Delay (30)
    ClearScreen(0,0,0)
    RenderWorld()
    FlipBuffers()
  Until KeyboardPushed(#PB_Key_Escape) Or Quit
  
Else
  MessageRequester("Fehler","Beim Initialisieren der Verschiedenen Bibliotheken.",#PB_MessageRequester_Ok) 
EndIf

End

;***************************************************************************************
;Bild Refresch Routine.
Procedure  Bild_Refresh()
  If StartDrawing(ScreenOutput())            
    DrawingMode(1)                          
    DrawingFont(UseFont(0))                 
    Locate(10, 10)           
    FrontColor(255,20,20) 
    DrawText("3D-Engine Test")    
    
    StopDrawing()                           
  EndIf                                    
EndProcedure

DataSection

Ecken:
Data.f -1, -1,  -1 ; Ecke 0             
Data.f  1, -1,  -1 ; Ecke 1              3---2
Data.f  1,  1,  -1 ; Ecke 2             /|  /|
Data.f -1,  1,  -1 ; Ecke 3            7-+-6 |
Data.f -1, -1,  1 ; Ecke 4             | | | |
Data.f  1, -1,  1 ; Ecke 5             | 0-+-1
Data.f  1,  1,  1 ; Ecke 6             |/  |/
Data.f -1,  1,  1 ; Ecke 7             4---5

TexturKoordinaten:
Data.f 0.0, 0.0 ; Vertex 0

Qubus_1:
Data.w 2, 1, 0
Data.w 0, 3, 2  
Data.w 4, 5, 6
Data.w 6, 7, 4
Data.w 6, 2, 3
Data.w 6, 7, 3  

EndDataSection

Das ist jetzt der nicht Funktionierende mit 6 Triangels sobald man in der Zeile:

Code: Alles auswählen

SetMeshData(0,#PB_Mesh_Triangles    ,?Qubus_1          , 6) 
Die 6 durch 5 ersetzt gehts wieder.... alerdings hat eine Seite dan nur noch ein Dreieck.......

Hat da jemand eine Ahnung....

Gruss Ground0

PS:Bitte sagt mir nicht das ich wieder was vergessen habe zu lesen :roll: [/code]

Verfasst: 13.02.2005 17:38
von Kaeru Gaman
hab das gleiche in der lounge geantwortet:

ist halt schlecht zu überblicken, weil hier mit pointern auf data-sections gearbeitet wird.

setz mal spasseshalber eine 7. datazeile an den schluss,
kannst ja das erste triangle wiederholen...

vielleicht wird beim einlesen der pointer hochgezählt,
und landet dann HINTER dem datensegment im speicher,
das gibt dann eine schutzverletzung,
weil er ja dann auf eine speicherstelle zeigt,
die nicht mehr zum programm gehört.

Verfasst: 13.02.2005 22:12
von Ground0
Danke genau dasd Wahr das Problem ....

:) JEtzt funzt das auch

Gruss Ground0

Verfasst: 16.02.2005 09:33
von dige
@Ground0: hast Du das schon gelesen: http://robsite.de/php/pureboard-archiv/ ... php?t=4924 ?

Verfasst: 19.02.2005 01:04
von Ground0
Hallo

Jop habe das Gelesen und mithilfe von dem Eigentlich meine Ersten Schritte in dieses Gebiet gewagt ;-) übrigens vielen Dank an den Autor :-)

Und auch an Danilo für ein Paar andere Beispiele alles Zusammen ist Fast der Perfekte einstieg...

Bis auf das Mit den Texturen da Blick ich noch nicht so ganz durch :-(

Gruss Ground0