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

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

1

21.12.2011, 19:12

In gerenderte Textur Multisampling anwenden

Hallo.
Ich würde es gerne endlich schaffen Multisampling in meiner Textur anzuwenden. Ich erstelle eine Render Textur so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
X3D->CreateTexture(X3D.GetScreenSize().x,
                                X3D.GetScreenSize().y,
                                1,
                                D3DUSAGE_RENDERTARGET,
                                D3DFMT_X8R8G8B8,
                                D3DPOOL_DEFAULT,
                                &pRenderTexture,
                                NULL);

    pRenderTexture->GetSurfaceLevel( 0, &pRenderSurface );
    X3D->GetRenderTarget(0,&pBackBuffer);

pRenderTexture ist vom Typ LPDIRECT3DTEXTURE9, pRenderSurface und pBackBuffer sind vom Typ LPDIRECT3DSURFACE9.
Ich render in die Textur so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
X3D->SetRenderTarget(0,pRenderSurface);
X3D->BeginScene();
//...
X3D->EndScene();

// Hier wird die Textur gerendert
X3D->SetRenderTarget(0,pBackBuffer);
//Textur Rendern

Daher das so kein Multisampling aktiv ist dachte ich, ich versuche es mal mit StretchRect();

C-/C++-Quelltext

1
2
3
4
5
6
7
8
X3D->StretchRect(pBackBuffer,NULL,pRenderSurface,NULL,D3DTEXF_ANISOTROPIC); // Hier
X3D->SetRenderTarget(0,pRenderSurface);
X3D->BeginScene();
//...
X3D->EndScene();

// Hier wird die Textur gerendert
X3D->SetRenderTarget(0,pBackBuffer);

pBackBuffer ist ja mein erstelltes RenderTarget mit MultiSampling. Jetzt wollte ich die Infos einfach in pRenderSurface kopieren. Aber leider immernoch keine Änderung. Noch schlimmer, jetzt gibt es ein Problem: Man kann durch Objekte durchgucken O.o Also irgendwie eigenartig. Mein Modellierer sagt das hat was mit den Normalen zutun. Aber an denen änder ich ja nichts. Dies passiert aber auch nur wenn ich AA anschalte.
Danke im Voraus.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

21.12.2011, 23:34

Was genau soll der StretchRect() Aufruf da bewirken wenn du dann erst wieder in die Textur renderst? Wofür der anisotropische Filter?

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

3

22.12.2011, 14:26

Also soll ich erst in die textur Rendern, dann X3D->StretchRect(pRenderSurface,NULL,pBackBuffer,NULL,D3DTEXF_ANISOTROPIC);. Also das gerenderte in den BackBuffer Surface kopieren?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

22.12.2011, 14:28

Ja klar, was sonst!? Warum D3DTEXF_ANISOTROPIC erschließt sich mir aber immer noch nicht ganz...

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

5

22.12.2011, 15:03

Was sollte ich deiner Meinung nach sonst angeben?

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

22.12.2011, 15:05

Zitat von »"MSDN"«

Filter type. Allowable values are D3DTEXF_NONE, D3DTEXF_POINT, or D3DTEXF_LINEAR.

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

7

22.12.2011, 15:19

OK (habe D3DTEXF_NONE angegeben) Nun jetzt aber zurück zu dem Problem mit den Normalen(?).
Ich habe 2 bilder im anhang AA ist mit AntiAlasing No_AA ist ohne AntiAliasing.
Ich habe Multisampling typ auf 8 smples und Qualitätstufe auf 3 gesetzt.
Auf dem Ersten Bild(No_AA) Ist alles ok, aber auf dem Zweiten ist weder AA, noch wird es richtig dargestellt O.o Man kann, naja durch die Balken durchgucken. Auch wenn ich Stretchrect weglasse kommt das Problem. Das war vorher aber noch nicht! Und naja StrechtRect bewirk leider wieder nichts. ich glaube das mich die Funktion nicht mag xD
»FSA« hat folgende Bilder angehängt:
  • AA.jpg
  • No_AA.jpg

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

22.12.2011, 15:25

Ich kann auf den Bildern jetzt nicht wirklich was erkennen.

Btw: JPEG ist mit seiner verlustbehafteten Komprimierung keine gute Wahl wenn du uns Aliasingartefakte zeigen willst ;)

FSA

Community-Fossil

  • »FSA« ist der Autor dieses Themas
  • Private Nachricht senden

9

22.12.2011, 15:29

Es geht nicht um Aliasing sonder darum das bei AA.jpg die Grafik nicht stimmt ;) Guck dir das nochmal an rechts ist alles richtig links stimmt was nicht. Ich weiß aber ehrlich nicht was das ist. Danke ;)

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

22.12.2011, 15:31

Das hat garantiert nichts mit dem Antialiasing zu tun. Vermutlich vergisst du beim Rendern in die Textur irgendwelche Blend-States anzumachen oder sonstwas. Das erklärt auch, wieso du meinst dass das Multisampling nicht funktioniert. Diese Gitter dort sind wohl einfach nur Texturen mit Alphakanal und keine richtige Geometrie und auf die hat Multisampling natürlich keine Wirkung...

Werbeanzeige