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

02.08.2012, 02:01

[Direct3D] Simples Dreieck wird nicht angezeigt

Hallo,
ich bin noch ein ziemlicher Neuling was DirectX angeht (um ehrlich zu sein ist das mein erstes DirectX Programm überhaupt), und habe folgendes Problem: Es soll ein einfaches Dreieck dargestellt werden, und die kompilierung des Programms verläuft auch problemlos, nur wenn das Programm dann ausgeführt wird, bleibt das Fenster schwarz (Dreieck wird nicht angezeigt) und ich kriege eine Meldung zur Laufzeit:
Eine Ausnahme (erste Chance) bei 0x7601b9bc in "...": Microsoft C++-Ausnahme: long an Speicherposition 0x0040fc1c..

Das ist der Code, mit dem das Dreieck gerendert werden soll(Ist natürlich nicht der komplette, aber syntaktisch und Linkermäßig sollte ja alles korrekt sein, da ich ja keine Fehlermeldung bekomme):

EDIT: Hm, aus irgendeinem Grund formatiert der den Code immer in dieses unleserliche Kauderwelsch um, deswegen häng ich ihn jetzt erstmal als .txt Datei dran
»neondrop« hat folgende Datei angehängt:
  • Quelle1.txt (2,69 kB - 72 mal heruntergeladen - zuletzt: 16.05.2024, 17:47)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »neondrop« (02.08.2012, 02:06)


birdfreeyahoo

Alter Hase

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

2

02.08.2012, 03:14

Also von Direct3D dürfte es eig stimmen. Du willst ein weißes 2D-Dreieck sehe ich das richtig?
Mit der Winapi-Programmierung kenn ich mich nicht so gut aus, ist das wirklich die ganze Fehlermeldung?

mfg

3

02.08.2012, 03:40

Das ist leider die einzige Meldung, und die wird nichtmal als richtiger 'Fehler' angezeigt. Ebenfalls komisch ist, dass die Meldung auch nicht nur einmal kommt, sondern zur Laufzeit die ganze Zeit über ausgespuckt wird :hmm:
Was das Dreieck angeht, an sich ist es 2Dimensional, soll aber im 3Dimensionalen Raum dargestellt werden.

Wenn du möchtest, kannst du es ja mal kompilieren, sollte eig problemlos funktionieren, es werden keine andern Dateien benötigt (außer dem Standard DX Kram)

4

02.08.2012, 09:25

Hast du die Standardeinstellungen der Renderstates beachtet? Cullmode und Lighting?

EDIT: Nach EndScene() müsste noch Present(0,0,0,0) aufgerufen werden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Hannes« (02.08.2012, 09:32)


5

02.08.2012, 09:30

Ich glaub du hast SetFVF(...) vergessen.

EDIT: Das ist C++ und kein C# deshalb musst du dich ums freigeben von Direct3D selber kümmern.

Nochwas zur Nachrichtenschleife: Wenn das Fenster geschlossen wird und die Nachricht WM_QUIT gesendet wirdist das Fenster schon automatisch Freigegeben, deshalb kann man nicht mehr Renderndern und die DX Aufrufe schlagen fehl.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Hannes« (02.08.2012, 09:40)


Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

6

02.08.2012, 11:05

Gestern hatte jemand ein ähnliches Problem:

hier

7

02.08.2012, 14:54

:dash: Danke! Nach SetFVF(..) und Present(..) funktioniert es jetzt. Was für dumme Fehler :dash: Hatte die beiden Funktionsaufrufe vorher auch drin, muss die beim rumkopieren aus Versehen weggelassen haben. Und Release() hatt ich nicht drin, weil ich dachte, dass das Problem irgendwie daran gelegen haben könnte ^^ Egal, nochmal danke.

@Fireball: Stimmt, den hab ich überlesen wegen dem Threadtitel. Hab ja noch keinen Vertexbuffer drin.

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »neondrop« (02.08.2012, 20:30)


Werbeanzeige