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

Aktuelle Zeit: Fr Jul 18, 2025 23:14

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: laangsaaaam ...
BeitragVerfasst: Do Mär 08, 2007 00:48 
Offline
DGL Member

Registriert: Fr Dez 08, 2006 14:27
Beiträge: 12
hi,
ich hab gerade eine Testszene aus einem einfachen Würfel, mit einer einfachen jpg-Textur geschrieben. Der Würfel samt Texture stammt aus 3dsMax und wurde mit dem Loader von Noeska eingeladen. Ohne Texture liegt die Framerate bei weit über 100fps, mit der Textur komme ich auf 0.2fps !!! Woran kann das liegen?

Mit einer anderen Texture hatte ich bis jetzt keinen Erfolg... :roll:

danke!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 08, 2007 08:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Hallo,

sind die Ausmaße der Textur kompatibel mit 2^n? d.h. 64x64, 512x512, 1024x512?

_________________
Bild

"User Error. Replace User and hit Continue."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 08, 2007 08:46 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
1. Vergewissere Dich, dass Du 3D-beschleunigte Treiber deines Herstellers installiert hast und nicht mit dem Softwarerederer von MS unterwegs bist. Wobei eine aktuelle CPU selbst dabei mehr FPS schaffen sollte.
2. Mein Favorit: Vergewissere Dich, dass Modell und Textur nur ein einziges Mal bei der Initialisierung geladen wird und Du die Loader nicht innerhalb der Render-Loop hast.

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 08, 2007 09:56 
Offline
DGL Member

Registriert: Fr Dez 08, 2006 14:27
Beiträge: 12
hey - danke für eure schnellen Antworten!!

Zitat:
sind die Ausmaße der Textur kompatibel mit 2^n? d.h. 64x64, 512x512, 1024x512?


Die Textur hat eine Größe von 320*240 (jpg, mittlere Qualität)

Zitat:
1. Vergewissere Dich, dass Du 3D-beschleunigte Treiber deines Herstellers installiert hast und nicht mit dem Softwarerederer von MS unterwegs bist. Wobei eine aktuelle CPU selbst dabei mehr FPS schaffen sollte.


Mein Laptop (!) ist ein gutes Jahr alt, hat einen 2GHz-Centrino, 512MB RAM und eine ATI-Mobility x300 drin. Das Softwarerendering sollte eigentlich ausgeschaltet sein, aber ich schau später nochmal nach neuen Treibern. Allerdings hab ein 3D-Spiel ausprobiert und auch in 3dsMax läuft alles ruckelfrei.

Zitat:
2. Mein Favorit: Vergewissere Dich, dass Modell und Textur nur ein einziges Mal bei der Initialisierung geladen wird und Du die Loader nicht innerhalb der Render-Loop hast.


Die Texturen werden im Konstruktor geladen. Da ich gerade ein bisschen ratlos bin, hab ich einfach mal zwei Codeauszüge mitgebracht. Vielleicht hilft das ja :)

Vielen Dank auf jeden Fall schon mal!!


Code:
  1. procedure TMDIChildLayoutViewer.FormCreate(Sender: TObject);
  2. var
  3.   i, n: Integer;
  4. begin
  5.   DecimalSeparator:='.';
  6.   screen.Cursor := crNone;
  7.   navigationMode := true;
  8.  
  9.   InitOpenGL;
  10.   DC := GetDC(Handle);
  11.   RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  12.   ActivateRenderingContext(DC, RC);
  13.   glEnable(GL_DEPTH_TEST);
  14.  
  15.   glEnable(GL_CULL_FACE);
  16.   glDepthFunc(GL_LESS);
  17.  
  18.   glClearColor(getRValue(bgColor), getGValue(bgColor), getBValue(bgColor), 0);
  19.  
  20.   // ------------------- Source erstellen(= [color=orange]das hier ist meine Box![/color]) -------------------
  21.  
  22.   Source := TAll3dsMesh.Create(Self);
  23.  
  24.   Source.TexturePath := 'OpenGl\textures';
  25.   Source.LoadFromFile('OpenGl\models' + basObj.getLayoutFile);
  26.  
  27.   Application.OnIdle := ApplicationEventsIdle;
  28.  
  29.   initView;
  30.  
  31.   scale := 0.5;
  32.   mouseNavScale := 0.1;
  33.   navigationMode := true;
  34.   moveFlag := false;
  35. end;
  36.  


Code:
  1. procedure TMDIChildLayoutViewer.ApplicationEventsIdle(Sender: TObject; var Done: Boolean);
  2. var
  3.   i, n: Double;
  4.   k, l, p, q: Integer;
  5.   quadric: pgluquadric;
  6.   ElementMesh: TMesh;
  7. begin
  8.   glMatrixMode(GL_PROJECTION);
  9.   glLoadIdentity;
  10.   glViewPort(0, 0, ClientWidth, ClientHeight);
  11.  
  12.   gluPerspective(45, ClientWidth/ClientHeight, NearClipping, FarClipping);
  13.  
  14.   glMatrixMode(GL_MODELVIEW);
  15.   glLoadIdentity;
  16.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  17.  
  18.   // ------------------- Source rendern (= [color=orange]das hier ist meine Box![/color]) -------------------
  19.   glpushmatrix();
  20.  
  21.     glrotatef(angleX, 1.0, 0.0, 0.0);
  22.     glrotatef(angleZ, 0.0, 1.0, 0.0);
  23.     glrotatef(-angleY, 0.0, 0.0, 1.0);
  24.  
  25.     gltranslatef(SourceMesh.getX + positionX, SourceMesh.getY + positionY, SourceMesh.getZ + positionZ);
  26.  
  27.     glscalef(1, 1, 1);
  28.  
  29.     SourceMesh.Render;
  30.   glPopMatrix();
  31.  
  32.   SwapBuffers(DC);
  33.   Done := False;
  34. end;
  35.  
[/code]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 08, 2007 10:11 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Thassil0 hat geschrieben:
Die Textur hat eine Größe von 320*240 (jpg, mittlere Qualität)

Thassil0 hat geschrieben:
... eine ATI-Mobility x300 drin. Das Softwarerendering sollte eigentlich ausgeschaltet sein ...

Eben nicht. Deine Textur muss als Höhe/Breite eine Potenz von 2 haben. Also 64, 128, 256 etc. ATI Grafikkarten sagen zwar, dass sie auch Non Power of Two Texturen können. Aber sobald MipMaps aktiv sind fällt sie intern unbemerkt in einen Softwaremodus. Da NV sich auch zu so etwas hat hinreißen lassen solltest du eigentlich nur Power of Two Texturen benutzen. Auch wenn die Karten das teilweise können ist es leider so, dass man es eher nicht verwenden sollte. Vor allem, da alleine durch die Textur die Hardwareanforderungen ins unermässliche hochschnellen würden.

PS: Abgesehen davon bringt die X300 auch keinen eigenen Speicher mit (hier im Büro habe ich auch so eine) und deswegen schnellt die Performance eh auch recht schnell nach unten sobald sie etwas mehr zu tun bekommt. Also auch wenn es eine aus der X0 Reihe ist solltest du davon eine Wunder erwarten. Meine 9600 Pro zu hause ist schneller. Das aber nur am Rande.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 08, 2007 15:17 
Offline
DGL Member

Registriert: Fr Dez 08, 2006 14:27
Beiträge: 12
Zitat:
Zitat:
Die Textur hat eine Größe von 320*240 (jpg, mittlere Qualität)

Eben nicht


:oops: oh Backe ... wie blöd muss man sein .... *schäm*
1. ich hab's verrafft....
2. der Unterschied ist gigantisch. Es läuft so flüssig, wie ohne Textur ... krass ... Tausend Dank!


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


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