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

chrisgl

Frischling

  • »chrisgl« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Solingen

Beruf: Student

  • Private Nachricht senden

1

04.03.2008, 13:40

Noch ein Raytracer, Einige Fragen

Da will man einen Raytracer in C++ schreiben, da der Versuch in Java einfach super lahm war und schon am Anfang trifft man auf Probleme und Fragen. Ich habe schon gesucht, konnte aber keine zufriedenstellenden Antworten finden.

Kurz erklärt:
Ich möchte einen Raytracer schreiben und beschleunigen. Dazu will ich dann später versuchen mit der OpenGLShaderLanguage zu arbeiten. Der Generelle Aufbau des Raytracers ist soweit klar, aber jetzt stell ich mir schon die ersten Fragen, die eher mit Windowsprogrammierung zu tun haben.

Meine Fragen:
- Womit zeige ich das gerenderte Bild am besten an? (Am liebsten wäre mir eine Anzeige bei der man das Bild entstehen sieht, und schnell sollte sie sein.)

- Schreibe ich meine Vector / Matrix Klassen lieber selbst, oder benutze ich fertige ? (Wenn ja, welche?)

- Wie verwalte ich am besten die Farben, bzw. das erzeugte Bild? (Array, oder ähnliches?)

- Wenn ich später evtl. mit der OpenGlShaderLanguage arbeiten will, muss ich dann direkt OpenGL benutzen?

- Welche Beschleunigungsmethoden gäbe es noch, wie z.B. SMID, etc. ?

Weitere Fragen folgen bestimmt...
Das ist doch Trivial!
Wie hieß nochmal der Typ, der den Satz des Pytagoras gemacht hat ? ;)

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

04.03.2008, 15:39

Ich würde alles entweder direkt in den Bildbuffer, oder besser noch in eine Texture rendern, und diese dann immerzu aktualisieren.

Mathematikklassen sind schnell geschrieben, aber genausogut kannst du schon geschriebene verwenden. Geschmackssache.

Ganz klar: Array, bzw Texture

Ich denk mal schon. Hab noch nicht wirklich mit OGL gearbeitet. Bei DX wäre es halt so.
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

04.03.2008, 16:02

Re: Noch ein Raytracer, Einige Fragen

Zitat von »"chrisgl"«

- Womit zeige ich das gerenderte Bild am besten an? (Am liebsten wäre mir eine Anzeige bei der man das Bild entstehen sieht, und schnell sollte sie sein.)


das hängt davon ab. wenn du vorhast ogl zu verwenden, dann vielleicht doch gleich mit ogl? ansonsten gehts natürlich auch mit winapi...

Zitat von »"chrisgl"«

- Schreibe ich meine Vector / Matrix Klassen lieber selbst, oder benutze ich fertige ? (Wenn ja, welche?)


wieder: hängt davon ab. wenn du vorhast mit ogl zu arbeiten, dann solltest du, denk ich, zumindest ne zu ogl kompatible mathe lib verwenden...

Zitat von »"chrisgl"«

- Wie verwalte ich am besten die Farben, bzw. das erzeugte Bild? (Array, oder ähnliches?)


hängt davon ab. wenn du ogl verwendest, dann wird es sich vielleicht anbieten die irgendwie in ne textur zu malen...

Zitat von »"chrisgl"«

- Wenn ich später evtl. mit der OpenGlShaderLanguage arbeiten will, muss ich dann direkt OpenGL benutzen?


nein, du kannst ogl natürlich auch indirekt benutzen, über ne library die ogl benutzt... :p

Zitat von »"chrisgl"«

- Welche Beschleunigungsmethoden gäbe es noch, wie z.B. SMID, etc. ?


die größten beschleunigungsmöglichkeiten bei nem raytracer sind (wie sonst auch) erstmal algorithmischer natur. in erster linie alles was dazu dient die anzahl der benötigten strahlen gering zu halten oder den aufwand pro strahl zu minimieren. z.B. sog. beschleunigungsstrukturen wie kd-trees oder bounding volume hierarchies bringen extrem viel...

chrisgl

Frischling

  • »chrisgl« ist der Autor dieses Themas

Beiträge: 2

Wohnort: Solingen

Beruf: Student

  • Private Nachricht senden

4

04.03.2008, 21:51

Danke schonmal. Das mit den Beschleunigungsstrukturen ist soweit klar. Da wollte ich auf einen Kd-Tree zurückgreifen. Also Algorithmentechnisch wollte ich versuchen durch den Kd-Tree, Blocker-Cache und eventuelle Parallelisierung schneller machen.

Wie mal ich denn direkt in den Fensterhintergrund der Winapi... ?
Das ist doch Trivial!
Wie hieß nochmal der Typ, der den Satz des Pytagoras gemacht hat ? ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

5

04.03.2008, 22:08

Zitat von »"chrisgl"«


Wie mal ich denn direkt in den Fensterhintergrund der Winapi... ?


http://msdn2.microsoft.com/en-us/library/ms532278(VS.85).aspx
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

04.03.2008, 22:09

Zitat von »"chrisgl"«

Wie mal ich denn direkt in den Fensterhintergrund der Winapi... ?


viele möglichkeiten. zum einen halt ganz normal mit BitBlt()/StretchBlt() etc.
wenn du dein bild selber in nem buffer hältst, dann kannst du evtl. auch direkt die funktion StretchDIBits() verwenden.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

7

04.03.2008, 22:11

Zitat von »"dot"«

Zitat von »"chrisgl"«

Wie mal ich denn direkt in den Fensterhintergrund der Winapi... ?


viele möglichkeiten. zum einen halt ganz normal mit BitBlt()/StretchBlt() etc.
wenn du dein bild selber in nem buffer hältst, dann kannst du evtl. auch direkt die funktion StretchDIBits verwenden.


Oder eben DirectX, wenns Fullscreen sein soll! :)
@D13_Dreinig

8

05.03.2008, 12:39

hier ist was interessantes - evtl. hilft es dir :-)

http://www.superjer.com/pixelmachine/

Werbeanzeige