totaler absturz beim aufruf von DrawIndexedPrimitive(...)



  • Das was der DX im debugmodus da von sich gibt ist für mich überhaupt nicht nachvollziehbar. Es heisst:

    Direct3D9: (ERROR) :Stream 0 does not have required number of vertices
    Direct3D9: (ERROR) :DrawIndexedPrimitive failed.
    

    tolle suppe. dabei habe ich grad in der logfile alle 6936 indices für die 2312 dreiecke, an denen DX grad gescheitert ist, stehen. Da sinn die. Schwarz auf weiß, html formatiert und mit nem rahmen hervorgehoben. Die zahl der vertices wird praktisch der DrawIndexedPrimitive übergeben. Steht auch in der logfile, nochmal zur kontrolle. Genau die selbe zahl, kein index zu viel oder zu wenig.

    Klappt nicht. 😮
    Die 6936 indices reichen nicht, um 2312 dreiecke zu zeichnen. 😕

    Warum auch immer. Irgendwelche vorschläge? 😕 😕



  • Bei DrawIndexedPrimitive gibt es ja die Parameter MinIndex, NumVertices und StartIndex.
    Was gibst du da an? Wahrscheinlich liegt der Fehler dort.



  • oh fuck!
    vertices??? hä, was geht denn jetzt ab... sry, moment mal, muss nochmal nachschauen... völliger blödsinn, was zum henker soll denn hier schiefgehen???
    in den index array werden doch ausschlieslich die short-werte von den entsprechenden vertices reingeschrieben, die fallen in meinem programm ja auch nicht vom himmel...
    und dass sich ein "i++" zähler verzählt hat, hab ich auch noch nie miterlebt... mmoment mal... o mein gott... was ist denn jetzt los... ich brauch erstma n joint^^ 😮

    @all: okay, danke schon mal allen. Ab und zu richtig durchzulesen, was der debugger da meckert bringts voll 🙄

    tut mir leid stehe momentan n bissl unter schock. ohjo, wenn ich jetzt feststelle, dass ich zuerst den zähler erhöhe, und dann den short dem vertex zuweise...



  • ...nein, hier ist zum glück alles ok, so blöd bin ich dann auch wieder nicht. Mit dem VertexBuffer scheint alles wunderbar zu stimmen, in die logfile werden alle vertices von 0 bis 133 reingeschrieben, insgesamt 134 stück, genausoviele, wie bei der erzeugung des vertexBuffers verwendet werden. Somit ist für mich dieser fehler:

    Direct3D9: (ERROR) :Stream 0 does not have required number of vertices
    

    absolut sinnlos.
    ich hab da einen vertexbuffer mit 134 vertices: von 0 bis 133.
    ich hab da ein indexbuffer, in dem die größte zahl 133 ist.
    was will man mehr? nun ja, eigentlich nur dass es funktioniert... 🙄

    @TomasRiker:
    Was soll ich da falsches eingegeben haben, überall wo s ging hab ich 0 einegegben, ansonsten die anzahl der indices, dann die anzahl der primitiven, etwa so:

    pD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,NumIndices,0,NumPrimitives);
    

    ich sehe da eigentlich keinen platz für fehler 😞
    aber DX schafft's, hier irgendwelche fehler zu finden. nur wo?



  • fullstop. sekunde mal. NumWas?



  • ich zitiere hier mal ausnahmsweise drei zeilen ausm buch von David Scherfgen, ich hoffe mal, dass er mich deswegen nicht verklagen wird, hier hat wahrscheinlich sowieso mind. jeder zweiter das buch durchgelesen...

    NumVertices: Die Differenz plus eins zwischen dem größten und dem kleinsten Index, der während des zeichenvorgangs verwendet wird. Der Name ist ein wenig unglücklich gewählt... [...]

    nicht unbedingt die direkte übersetzung für das, was in der dokumentation steht:

    NumVertices
    [in] Number of vertices used during this call. The first vertex is located at index: BaseVertexIndex + MinIndex.

    ähm? muss man da also doch die Vertex-Nummer=Indices anstatt der länge der Indices-Folge angeben oder wie??? Warum hat das blöde ding das ganze dann schon mind. 100 verspeißt, ohne zu meckern? und 100000 mal mit meckern??? 😮



  • @TomasRiker: Danke! Danke danke danke danke!!!! Lag tatsächlich daran, dass ich die beschreibung des NumVertices parameters völlig falsch verstanden habe 🙄

    @all: leute, ich kann euch grad gar nich genug danken, ohne euch hätte ich den blöden anfängerfehler wohl nie gefunden. danke für alle tipps!

    mfg. andrey



  • Andrey schrieb:

    ich zitiere hier mal ausnahmsweise drei zeilen ausm buch von David Scherfgen, ich hoffe mal, dass er mich deswegen nicht verklagen wird

    Für dich mach ich mal eine Ausnahme 😉



  • Nja, wenn man sich den satz etwas genauer durchliest, kann man alles gleich wunderbar verstehen, nur wenn man s dann doch irgendwie falsch versteht, jedoch aber alles verstanden zu haben glaubt, und der DX dann noch gemeinerweise nicht gleich abstürzt, sondern in manchen fällen einwandfrei funktioniert ⚠ , obwohl ein fehler vorhanden ist, dann ist man doch etwas verwirrt, und fängt an, das programm komplett anderswo auseinanderzunehmen, obwohl es nicht nötig ist... 🙄

    Für dich mach ich mal eine Ausnahme

    juhu! dann habe ich doch noch mal glück gehabt 😃

    nochmal vielen dank! 🤡 👍



  • Na, hab ich's nicht gesagt: falsche Daten. f'`8k

    Gruß, TGGC (\-/ has leading)



  • Jaja, TGGC hat wie immer recht gehabt... 👍


Anmelden zum Antworten