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

Aktuelle Zeit: Fr Jul 18, 2025 15:14

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Langsamer Ortho-Modus
BeitragVerfasst: Mi Aug 02, 2006 17:49 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
Nachdem ich das Post hier gelesen hab, hab ich mich auch an einer Worms-Map versucht. Allerdings habe ich dabe Probleme mit der Textur. Wenn ich sie Rendern will, sehe ich nur weiß und der Rendervorgang dauert pro Frame ca 1,5 sec. Mein Render-Code:
Code:
  1.   glPreDraw;
  2.     glDisable(GL_LIGHTING);
  3.     glEnable(GL_TEXTURE_2D);
  4.     Enter2dMode(640,480);
  5.       Level.Bind;
  6.       glBegin(GL_QUADS);
  7.         glVertex2d(0,0);
  8.         glVertex2d(640,0);
  9.         glVertex2d(640,480);
  10.         glVertex2d(0,480);  //<-- hier tritt lange Wartezeit auf
  11.       glEnd;
  12.     Exit2dMode;
  13.   glAfterDraw(DC);

Level ist ein TglBitmap2d, aktuelle glBitmap.

Die Funtionen sind aus meiner Sammlung
glPreDraw - Clearen der Szene, Modelviewmatrix
Enter2dMode - Ortho-Modus mit den Maßen an, in Modelview wechseln
Exit2dMode - das ganze zurück
glAfterDraw - SwapBuffers
An den Funktionen kann es nicht liegen, da sie in einem anderen Projekt funktionieren.

Die benutzte Textur kann ich noch hochladen, falls es etwas hilft.

EDIT: ich seh schon, die Texturkoordinaten fehlen. aber die Geschwindigkeit ist doch komisch.

_________________
Gott sei Dank bin ich Atheist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 02, 2006 20:09 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Achte drauf dass die Formate der Texturen POT sind, also Potenzen von 2. Wenn das nicht der Fall ist, springt je nach Treiber die Emulation für GL_ARB_non_power_of_two an und der Rendervorgang wird tierisch langsam. Alternativ kannst du natürlich auch GL_TEXTURE_RECTANGLE_ARB als Texturziel verwenden, das ist allerdings mit Einschränkungen verbunden, wie dem Fehlen von Mipmaps und dass du Texturkoordinaten statt im Bereich 0..1 im Bereich 0..Texturgröße angeben musst.

Ganz abgesehen davon scheinst du in deinem Rendercode gar keine Texturkoordinaten anzugeben. Das erklärt, warum du trotz Treiberemulation keine Textur siehst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 02, 2006 23:13 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
Also, die war tatsächlich nicht POT. (wie bin ich drauf gekommen, dass 640*480 passen könnte? :roll: )
Jetzt hab ich auf 512*512 gebracht, allerdings ist das schon nicht gut, wegen dem Seitenverhältnis. Naja, muss ich Skalieren. Danke jedenfalls für deine Hilfe, da hab ich echt nicht aufgepasst.

Gruß
Martok

_________________
Gott sei Dank bin ich Atheist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 00:48 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Du kannst dir natürlich nochmal Rectangle-Texturen anschauen, mit denen du ebenfalls beliebige Kantenlängen benutzen kannst. Die sind für den Ortho-Modus normalerweise ganz brauchbar, da man ja dann meistens sowieso keine Mipmaps braucht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 07:51 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Die glBitmap überprüft ob die Extensions unterstützt werden. Allerdings gibt es auf ATI Grafikkarten bei non Power of Two Texturen und MipMaps den Effekt, dass zwar alles funktioniert aber tierisch langsam ist. Emulation halt. Ohne MipMaps funktionieren sie allerdings. Ich würde aber dennoch vorschlagen, dass du entweder Power Of Two Texturen oder Texture Rectangles benutzt. Für Rectangles genügt es, wenn du vor GenTexture die Eigenschaft Target auf den entsprechenden Wert einstellst. Der Rest passiert intern. Und die anderen Koordinaten nicht vergessen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 11:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Mai 29, 2006 21:13
Beiträge: 142
Wohnort: Ballenstedt/Sachsen-Anhalt
Welchen Wert nimmt man da am besten? GL_TEXTURE_RECTANGLE_ARB, GL_TEXTURE_RECTANGLE_EXT?
Ich denke mal der GL_TEXTURE_RECTANGLE_NV wird NVidia-spezifisch sein, also nicht so gut.

_________________
Gott sei Dank bin ich Atheist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 12:16 
Offline
DGL Member

Registriert: So Feb 19, 2006 23:46
Beiträge: 55
Die EXT-Extension ist glaube ich nicht so weit verbreitet, zumindest auf meiner FX 5700 ist sie nicht unterstützt, daher sollte die ARB-Extension die erste Wahl sein.
Im Grunde ist es aber egal, denn das ARB hat die NV-Extension 1:1 übernommen, inklusive der Konstanten. Der Treiber weiß also nicht einmal welche der beiden Extensions du ansprichst.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Die drei Extensions sind zu 100% identisch. Zu mindest was die Konstanten angeht. Also ist es vollkommen egal welche Extension du benutzt.

Der einzige Unterschied besteht bei der Unterstützung von glSlang. Da hat die ARB Variante die Nase vor. Bzw existieren bei der EXT Variante kleinere Schwächen. Aber das sollte für dich noicht von interesse sein. Und Fixed Function funktioniert alles gleich.

PS: ATI Grafikkarten unterstützen im übrigen NUR die EXT Variante.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 12:57 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Man kann auch die nächst größere 2er Potenz nehmen und den Rand dann frei lassen. Mipmapping hat man dann natürlich auch nicht, aber damit zumindest keine Probleme im Shader.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 03, 2006 18:01 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Aporos emulation:
Warum kann nicht mal die X1900 XT NPOT, das ist Tierrisch nervig, und auch ein bischen unverständlich, da die eigentlich genug Zeit hatten um das bei ihrer neusten Karte reinzuschmeissen.

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 09:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Keine Ahnung warum das nicht geht. Aber deaktiviere mal MipMapping, dann sollte es gehen. Wobei man anstelle von MipMapping sowieso eher zu anisotropischen Filterung greifen sollte. Und dann kommt der Effekt der MipMaps eh nicht zum Tragen. Außderm ist anisotropische Filterung viel schöner. Vielleicht sieht ATI MipMaps auch als nicht wichtig genug an.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Aug 04, 2006 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
iirc unterstützt ne X1900 NPOT texturen, gibt die nur lediglich nicht als erweiterung mit an, da sie in OGL 2.0 pflicht sind (nvidia karten unterstützen sie hingegen nur, wenn sie auch als erweiterung ausgeschrieben sind...)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


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:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.015s | 16 Queries | GZIP : On ]