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

  • »CoookeiMonssterr« ist der Autor dieses Themas

Beiträge: 25

Wohnort: Schweiz

Beruf: Informatik-Lehrling

  • Private Nachricht senden

1

25.11.2014, 10:36

Laufzeitfehler - ClearRenderTarget

Hallo zusammen

Ich hab jetzt einmal weiter probiert und versucht mit DirectX, welches ich ja bereits initialisiert habe, zu arbeiten. Zuerst einmal habe ich ein RenderTarget erstellt und wollte dieses in der Render Methode meiner Application clearen, damit es im Fenster eine Farbe hat. Und danach die Swapchain switchen. Damit der Backbuffer zum Frontbuffer wird.. etc..

Leider gibt das bei mit einen Fehler... Das Programm stoppt in der WndProc Methode und zeigt einen Zugriffsfehler. Wenn ich den Befehl zum Clearen kommentiere, tritt der Fehler nicht mehr auf und das Programm läuft wie geschmiert.. Liegt es vielleicht an meiner Fensterklasse? Hab ich diese falsch gemacht?

Ich würde mich freuen, wenn jemand sich Zeit nimmt meinen Code anzusehen und mir zu helfen und es nicht mehr so ein peinlich offensichtlicher Fehler ist wie letztes Mal :dash: :dash:

MFG

CoookeiMonssterr
»CoookeiMonssterr« hat folgende Datei angehängt:
  • Quellcode.zip (6,73 kB - 37 mal heruntergeladen - zuletzt: 09.05.2024, 21:28)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

2

25.11.2014, 11:26

Hi,

Das hier überschreibt dein Backbuffer-Pointer wieder, sollte vermutlich eher OMSetRenderTargets gemeint sein, oder?

C-/C++-Quelltext

1
m_d3dDeviceContext->OMGetRenderTargets(1, &m_d3dBackBuffer, NULL);


Außerdem fehlt (der Korrektheit wegen) ein Flag beim erzeugen der Swapchain (DXGI_USAGE_BACK_BUFFER):

C-/C++-Quelltext

1
scd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT | DXGI_USAGE_BACK_BUFFER; 
@D13_Dreinig

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »David_pb« (25.11.2014, 11:31)


  • »CoookeiMonssterr« ist der Autor dieses Themas

Beiträge: 25

Wohnort: Schweiz

Beruf: Informatik-Lehrling

  • Private Nachricht senden

3

25.11.2014, 11:33

Vielen Damk David :thumbsup:

Der Error ist zumindest verschwunden.

Aber funktionieren tut es immer noch nicht.

Der Hintergrund wird gar nicht gecleart. Er bleibt einfach unverändert...

  • »CoookeiMonssterr« ist der Autor dieses Themas

Beiträge: 25

Wohnort: Schweiz

Beruf: Informatik-Lehrling

  • Private Nachricht senden

4

25.11.2014, 11:37

Tut mir leid :dash: :dash: :dash:

Bin mal wieder zu blöd für alles :pillepalle:

Habe m_pDirect3d->m_d3dSwapChain->Present(1, 1); geschrieben obwohl es m_pDirect3d->m_d3dSwapChain->Present(0, 0); heissten sollte :dash: :dash:

Vielen Dank für die Antwort... Hat mir wirklich geholfen

buggypixels

Treue Seele

Beiträge: 125

Wohnort: Meerbusch

Beruf: Programmierer

  • Private Nachricht senden

5

25.11.2014, 14:56

Das ist aber auch der übelste Fall von ungarischer Notation, den ich seit langer Zeit gesehen habe.
Dann auch noch falsch angewendet:

C-/C++-Quelltext

1
2
3
4
5
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
    CApplication* g_pApp = new CApplication(&hInstance);
    return g_pApp->DoLoop();
};

g_ steht für globale Variablen.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

26.11.2014, 08:49

Und es leaked Memory auf diese Art.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

  • »CoookeiMonssterr« ist der Autor dieses Themas

Beiträge: 25

Wohnort: Schweiz

Beruf: Informatik-Lehrling

  • Private Nachricht senden

7

01.12.2014, 17:14

Und es leaked Memory auf diese Art.

Auf welche Art leaked Memory? Könntest du das noch einmal genauer erklären?

Das ist aber auch der übelste Fall von ungarischer Notation, den ich seit langer Zeit gesehen habe.
Dann auch noch falsch angewendet:

C-/C++-Quelltext

1
2
3
4
5
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
    CApplication* g_pApp = new CApplication(&hInstance);
    return g_pApp->DoLoop();
};

g_ steht für globale Variablen.

Dass der Präfix "g_" für eine globale Variable steht ist klar... Weiss auch nicht wesshalb ich es falsch gemacht habe.... ?(
Zumindest versuche ich die ungarische Notation anzuwenden...

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

8

01.12.2014, 17:24

Und es leaked Memory auf diese Art.

Auf welche Art leaked Memory? Könntest du das noch einmal genauer erklären?


C-/C++-Quelltext

1
2
3
4
5
int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow)
{
    CApplication* g_pApp = new CApplication(&hInstance);
    return g_pApp->DoLoop();
};


Leak.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Werbeanzeige