Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Mai 23, 2024 21:42

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 04, 2006 18:17 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Tja. Bei RenderToTexture muss man sowas nunmal leider in Kauf nehmen. Ich bleib dabei: Du brauchst 2 Renderkontexte ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 04, 2006 18:21 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2067
Programmiersprache: C++
Deine Grafikkarte kann bis zu 4096 x 4096 grosse Texturen, dass sollte nicht das Problem sein.
Vielleicht hast du die Grösse falsch angepasst?
Das mit den 512 ist jedenfalls klar, weil es einfach zu klein für deinen Zweck ist.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 05, 2006 13:30 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
4096er Texturen? Ich bezweifle, dass das performant ist. btw meine Karte kann auch 4096er Texturen, aber nicht bei RenderToTexture. Dort wird dann nämlich ein Großteil einfach abgeschnitten.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Apr 05, 2006 14:07 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ja klar. 4096 Texturen sind durchaus möglich. Würde mich aber nicht darauf verlassen, dass die auch immer existieren müssen. Das Problem hierbei ist aber etwas ganz Anderes. Bei klassischem RenderToTexture wird der Bildschirmausschnitt kopiert und der richtet sich nach dem Fenster welches sich in der Maximalgröße wieder nach dem Monitor richtet. Kurz um. Wenn dein Fenster eine Auflösung von 800x600 hat dann ist der Viewport auch nur maximal so groß und das was du dann in deine 4096 große Textur reinkopieren kannst ist auch nur so groß. Der Rest ist undefiniert.

Evtl solltest du dir in der Tat mal überlegen ob nicht mehrere Kontexte vielleicht sinnvoller wären. Habe selbst schon problemlos 3 Kontexte in ein und der selben Anwendung gehabt ohne, dass es groß Probleme gegeben hat. Und renderToTextur wird in diesem Falle eine Verschlächterung sowohl optisch als auch performancetechnisch. Weswegen du davon eher abstand halten solltest.

Etwas was vielleicht auch noch funktionieren könnte wäre, wenn du dir zwar einen großen Kontext erstellst aber den ViewPort nur auf eine Hälfte anwendest dann zeichnest und ihn dann für die nächste Hälfte einrichtest und zeichnest. Du darfst aber nur jeweils einmal glClear und SwapBuffers aufrufen. Sonst löscht du entweder die eine hälfte des Bildes oder überträgst schon ein halbes. Evtl musst du auch noch mit glScissor den sichtbaren Bereich beschränken, da der ViewPort wohl mitunter ein bisschen ausgefrannst wird. Keine Ahnung warum. Aber üblicher wäre für so etwas schon eher die 2 Kontexlösung.

PS: Habs erst jetzt gesehen. In der glBitmap heißt die Klasse nicht TBitmap (ist die von Delphi) sondern TglBitmap2D. Doku in meine Signatur.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Apr 06, 2006 15:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Feb 13, 2006 19:32
Beiträge: 20
Lossy eX hat geschrieben:
PS: Habs erst jetzt gesehen. In der glBitmap heißt die Klasse nicht TBitmap (ist die von Delphi) sondern TglBitmap2D. Doku in meine Signatur.


Das war der entscheidende Hinweis. Damit sind's tatsächlich nur vier klitzekleine Änderungen, damit das Template funktioniert:

Code:
  1.  
  2. 1.
  3. uses
  4.     //...
  5.     //OpenGL12, glBmp; ändern in:
  6.     dglOpenGL, glBitmap;
  7.  
  8. 2.
  9. var
  10.    //tex :TGlBmp; ändern in:
  11.    tex :TglBitmap2D;
  12.  
  13. 3.
  14. procedure TForm1.FormCreate(Sender: TObject);
  15.     //...
  16.     //if not LoadOpenGL then ändern in:
  17.     if not InitOpenGL then
  18.  
  19. 4.
  20. procedure TForm1.FormShow(Sender: TObject);
  21.     //...
  22.     //ClearExtensions; auskommentieren
  23.  
  24.     //... und noch weiter unten bei:
  25.     // Wir laden in den ersten RC die Texture
  26.     tex := TglBitmap2D.Create;
  27.     tex.LoadFromFile('.\gfx\kiste.jpg'); // Datei laden
  28.     tex.GenTexture; // geladene Textur an OpenGL übergeben
  29.  
  30.  


Danke euch allen für die vielen nützlichen Kommentare. Dabei das Renderpassing kennengelernt zu haben hat mir sicher auch nicht geschadet ...

Grüsse,
ölgötz


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » DGL » Feedback


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]