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

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Ground0
Beiträge: 318
Registriert: 05.02.2005 02:09
Wohnort: Stilli, Schweiz
Kontaktdaten:

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

Beitrag 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]
lmon Monitoring Service inkl. Clients
lweb Multi-Threaded Webserver
lbup-server Backup Server applikation
lmanager ERP Applikation.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Ground0
Beiträge: 318
Registriert: 05.02.2005 02:09
Wohnort: Stilli, Schweiz
Kontaktdaten:

Beitrag von Ground0 »

Danke genau dasd Wahr das Problem ....

:) JEtzt funzt das auch

Gruss Ground0
lmon Monitoring Service inkl. Clients
lweb Multi-Threaded Webserver
lbup-server Backup Server applikation
lmanager ERP Applikation.
Benutzeravatar
dige
Beiträge: 1243
Registriert: 08.09.2004 08:53

Beitrag von dige »

@Ground0: hast Du das schon gelesen: http://robsite.de/php/pureboard-archiv/ ... php?t=4924 ?
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
Ground0
Beiträge: 318
Registriert: 05.02.2005 02:09
Wohnort: Stilli, Schweiz
Kontaktdaten:

Beitrag 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
lmon Monitoring Service inkl. Clients
lweb Multi-Threaded Webserver
lbup-server Backup Server applikation
lmanager ERP Applikation.
Antworten