Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

20.09.2008, 06:43

DrawIndexedPrimitiveUP() geht nur 8 mal

Hallo, kann es sein das DrawIndexedPrimitiveUP() nur 8 mal ausgeführt werden kann, in einem Zeichenvorgang? Denn wenn ich es 9 mal ausführe, bekomme ich einen runtime error, und mein direct3ddevice hat dann plötzlich den wert "Unknown" ...

2

20.09.2008, 08:19

Warum sollte das begrenzt sein?
Zeig mal den Code.

Anonymous

unregistriert

3

20.09.2008, 10:11

Dustin Braun
User-Pointer-Funktionen sind ja bekannt dafür das sie etwas "komisch" sind, das aber nur im Bezug auf Performance. Aber das was du schreibst kann ich mir nicht vorstellen. Code her ;)

Ansonsten wenn du ganz sicher bist, schreib dir diese Funktion nativ neu. Ich hab mal gezeigt wie das mit DrawPrimitiveUP ging:
https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=5425&highlight=drawprimitiveup

4

20.09.2008, 16:08

Eigentlich ist das in meiner Engine eigebaut, und das währe ziehmlich viel Code xD

Ich zeige mal wie ich zeichne:

d3ddev->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, buffer->Vertex.get_used(), buffer->Index.get_used()/3, buffer->Index.getData(), D3DFMT_INDEX16, buffer->Vertex.getData(), sizeof(vertex3d))

Dabei beinhalter Vertex.get_used() die anzahl der Vertieces, und Index.get_used() die anzahl der Indices die benutzt werden. Nun zeichnet er komischwerweise garnichts mehr auf den bildschirm ...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

5

20.09.2008, 17:11

Dann ab ann den debugger. Klingt nach einem bösen kleinen Fehler.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

6

20.09.2008, 17:35

Ne da find ich nix! Also, ch glaube es liegt einfach daran das ich einfach falsch die indices gelinkt hab! Mene Vertices sehen folgendermaßen aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
Buffer.Vertex[0]  = vertex3d(-1.0f,-1.0f,-1.0f, 0,0,0, 0, 1, 0xff33ffff); 
        Buffer.Vertex[1]  = vertex3d(-1.0f, 1.0f,-1.0f, 1,0,0, 1, 1, 0xffff33ff); 
        Buffer.Vertex[2]  = vertex3d(1.0f, 1.0f,-1.0f, 1, 1,0, 1, 0, 0xffffff33); 
        Buffer.Vertex[3]  = vertex3d(1.0f,-1.0f,-1.0f, 0, 1,0, 0, 0, 0x33ffffff); 
        Buffer.Vertex[4]  = vertex3d(-1.0f,-1.0f, 1.0f, 0, 1,0, 0, 0, 0x33ffffff); 
        Buffer.Vertex[5]  = vertex3d(1.0f,-1.0f, 1.0f,  1,-1, 1, 0, 1, 0xffffffff); 
        Buffer.Vertex[6]  = vertex3d(1.0f, 1.0f, 1.0f,  1, 1, 1, 0, 0, 0xffffffff); 
        Buffer.Vertex[7]  = vertex3d(-1.0f, 1.0f, 1.0f, -1, 1, 1, 1, 0, 0xffffffff); 


Dabei sind die ersten drei Parameter die Positionen! Und gelingt habe ich das ganze so:

C-/C++-Quelltext

1
2
3
4
const int u[36] = {0,1,2, 2,3,0, 4,5,6,
                          6,7,4, 0,3,5, 5,4,0,
                          3,2,6, 6,5,3, 2,1,7,
                          7,6,2, 1,0,4, 4,7,1};


Und wenn ich das ganze nun zeichnen will:

C-/C++-Quelltext

1
d3ddev->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 8, 12, buffer->Index.getData(), D3DFMT_INDEX16, buffer->Vertex.getData(), sizeof(vertex3d))


Ich habe 8 Vertices, und 12 Primitive! Man kann schon mitlerweile erkennen, das das ganze einmal ein Würfel sein soll, nur sind nur ein paar Dreiecke zu sehen!

Muss ich vieleicht wenn ich DrawIndexedPrimitiveUP() benutze vorher noch irgent etwas anderes machen, außer die FVF zu setzen?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

7

20.09.2008, 17:53

Zitat von »"Dustin Braun"«

Ich habe 8 Vertices, und 12 Primitive! Man kann schon mitlerweile erkennen, das das ganze einmal ein Würfel sein soll, nur sind nur ein paar Dreiecke zu sehen!


das ist meistens der fall wenn die indices nicht stimmen. machma backfaceculling aus und/oder rendere nur wireframe. wenn das passt dann muss es noch was anderes sein aber ich würde dir empfehlen teste das das hat bei mir in 90% der fällen auch geholfen!

8

20.09.2008, 18:02

Habe Wireframe gemacht, und es werden leider nur 2 Dreiecke gerendert :(

9

20.09.2008, 18:08

Lohnt es sich eigentlich, um Modelle zu zeichnen, DrawIndexedPrimitivesUP() zu benutzen? oder sollte man doch leiber selber einen VertexBuffer erstellen?

10

20.09.2008, 18:54

Zitat von »"Dustin Braun"«

Lohnt es sich eigentlich, um Modelle zu zeichnen, DrawIndexedPrimitivesUP() zu benutzen? oder sollte man doch leiber selber einen VertexBuffer erstellen?

Für den Anfang, zum Lernen sicher nicht verkehrt?
Apropos Zeichnen: Hast du dir eigentlich mal ne Skizze gemacht?
fka tm

Werbeanzeige