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

Aktuelle Zeit: So Jul 20, 2025 09:46

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 47 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
BeitragVerfasst: Do Feb 11, 2010 13:38 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Also mal ein update,

dein projekt funktioniert auf nvidea einwandfrei, wobei nur ein drahtwürfel ohne flächen gezeichnet wird.
auf ati ist das hintergrundbild irgendwie total verzerrt.

das jpg für die textur ist angeblich beschädigt


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 11, 2010 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

das mit dem Würfel is normal, der soll bloß aus Strichen sein :P
Un wegen der Textur, hast du mal ne andere versucht? Einfach die "tex.jpg" gegen eine beliebige andere ersetzen. Das sie verzerrt ist kann aber auch normal sein, da es ja ein Fensterfüllendes Quad ist. Wenn das Fenster dann nicht die passenden Maße hat wird sie eben verzerrt angezeigt. Oder meinst du mit verzerrt totalen murks? Haste evtl ma n Screenshot?

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 11, 2010 22:53 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
screenshot auf ATI Saphire 1950X sieht so aus:

http://file1.npage.de/003341/04/bilder/verzerrte_textur.jpg

aber das würde ich nicht überbewerten, die Grafikkarte hat eh nen Schaden seit ich sie an die Wasserkühlung angeschlossen hab. obwohl sie meine eigenen texturen richtig darstellt *lach*
Jedenfalls sieht dein Projekt auf meinem Laptop (auch irgendeine ATI) und in der Firmal (Nvidea) gut aus.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 12, 2010 19:10 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
OK, dann lassen wir die Textur ma außer acht ^^
Hast du mal versucht meine gluDrawBackground-Methode (siehe glUtils-Unit) in deinem Projekt zu nutzen? Wenn die da auch richtig funzt haben wir das Problem ja behoben...

MfG

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Feb 12, 2010 21:39 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Nein, dazu bin ich leider noch nicht gekommen...

steht aber auf meinem Zettel fürs Wochenende mir das genauer anzuschauen.

Ich habe gestern mal die ersten Schritte gewagt mit der Textsuite von Lossy_Ex (sp) text in mein projekt zu bekommen.

das führt bei gradient Hintergrund jetzt auch wieder hier auf ATI zu einer Abdunklung, komischerweise nicht wenn man ein Hintergrundbild hat, dabei sind die beiden proceduren identisch aufgebaut.

Code:
  1. procedure TForm1.ZeichneBackground(Sender:TObject);
  2.  
  3. begin
  4.         glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  5.         glMatrixMode(GL_PROJECTION);                        //in die ProjektionsMatrix
  6.         glLoadIdentity;                                     //Standart laden
  7.         glOrtho(0, panel2.width, panel2.height, 0, -5, 1000);  //2D-Ansicht
  8.         glMatrixMode(GL_MODELVIEW);                         //in die ModelMatrix
  9.         glLoadIdentity;                                      //Standart laden
  10.         glBegin(GL_QUADS);                                  //BildSchirmfüllendes Quad zeichnen
  11.         glColor3f(0.0,0.0,1.0); glVertex2f(           0,              0); // unten links
  12.         glColor3f(0.2,0.5,0.7); glVertex2f(           0,  panel2.height); // oben links
  13.         glColor3f(0,0,0.3);     glVertex2f(panel2.width,  panel2.height); // unten rechts
  14.         glColor3f(0.1,0.1,0.3); glVertex2f(panel2.width,              0); // oben rechts
  15.         glEnd;
  16.         glColor3f(1.0,1.0,1.0);
  17.         glClear(GL_DEPTH_BUFFER_BIT);                       //DepthBuffer löschen
  18.  
  19. end;
  20.  
  21. procedure TForm1.TextureBackground(Sender:TObject);
  22. begin
  23.         glDisable(GL_COLOR_MATERIAL);
  24.         glClear(GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT);
  25.         glMatrixMode(GL_PROJECTION);                        //in die ProjektionsMatrix
  26.         glLoadIdentity;                                     //Standart laden
  27.         glOrtho(0, panel2.width, panel2.height, 0, -5, 1000);  //2D-Ansicht
  28.         glMatrixMode(GL_MODELVIEW);                         //in die ModelMatrix
  29.         glLoadIdentity;                                      //Standart laden
  30.         fTexture.Bind;
  31.         glBegin(GL_QUADS);                                  //BildSchirmfüllendes Quad zeichnen
  32.         glcolor3f(1.0,1.0,1.0);                             // ohne diese Zeile wird das Hintergrundbild in einem Farbton gerendert
  33.         gltexcoord2f(0.0,0.0); glVertex2f(           0.0,              0.0);  //unten links
  34.         gltexcoord2f(0.0,1.0); glVertex2f(           0.0,  panel2.height);    //oben links
  35.         gltexcoord2f(1.0,1.0); glVertex2f(panel2.width,  panel2.height);      //oben rechts
  36.         gltexcoord2f(1.0,0.0); glVertex2f(panel2.width,              0.0);    //unten rechts
  37.         glEnd;
  38.         fTexture.Unbind();
  39.         glClear(GL_DEPTH_BUFFER_BIT);
  40. //        glEnable(GL_COLOR_MATERIAL);
  41. end;



:shock:

und dann ist mir noch aufgefallen das der text auf meinem laptop (ATI) und PC (ATI) kleine rähmchen um jeden buchstaben hat, auf den rechnern in der firma (Nvidea) sieht er hingegen viel besser aus... (bis auf die nervtötende Tatsache das er blöde hintergrund - noch stärker abdunkelt).

siehe screenshots:

http://file1.npage.de/003341/04/bilder/hintergrund_nicht_abgedunkelt.jpg
http://file1.npage.de/003341/04/bilder/text_auf_nvidea.jpg
http://file1.npage.de/003341/04/bilder/rahmen_um_text.jpg


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Feb 13, 2010 03:14 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

was den Hintergrund angeht hab ich grad keine Ahnung. Aber das mit den Kästchen um die Buchstaben is n Bug oder so (weiß ich nich mehr genau, dazu sollte sich lieber Lossy äußern^^). Auf jedenfall bekommst du die weg, indem du den Font folgendermaßen erstellst:
Code:
  1.   tsContextBind(fFontContextID); 
  2.   tsSetParameteri(TS_RENDERER, TS_RENDERER_OPENGL); CheckError;
  3.   tsSetParameteri(TS_CREATOR, TS_CREATOR_GDI); CheckError;
  4.   tsFontCreateCreatorA(pAnsiChar(fFileName), fWidth, fStyle, TS_DEFAULT, TS_DEFAULT, @fFontID); CheckError;
  5.   tsPostAddShadow4f(1,0,0,1,1,1,0); //<-- das beseitigt die Kästchen


€: was mir grad noch einfällt: manchmal hat man verfälschte Farbwerte, wenn man die Texturen aktiviert hat, aber keine Textur gebunden ist. Ruf mal vorm rendern des Hintergrunds noch glDisable(GL_TEXTURE2D) auf...

Mfg Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Feb 13, 2010 07:53 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
juhu das mit dem gldisable(gl_texture_2d) hat was gebracht, jetzt bleibt der hintergrund hier beim gradient richtig! :D :D :D DANKE!!!!! ich kann langsam keine abdunkelnden hintergründe mehr sehen!


kann das auch der grund sein wieso nvidea grundsätzlich abdunkelt??? wo muß ich dann die gltexture disablen?


das mit den rähmchen um den text hat sich nicht geändert... die zeile (mit minimal anderen werten) war eh schon im sample code von lossy. ändern in deine werte hat nix gebracht. aber das hat zur zeit sowieso prio b... da öffne ich dann zu gegebener zeit einen eigenen thread wenn ichs nicht irgendwo finde.

also ich pflaster mein projekt jetzt erstmal mit gldisable(gl_texture_2d) zu und hoffe das dann das abdunkeln auch auf nvidea ein ende hat....


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Feb 13, 2010 18:29 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nicht ohne Sinn und verstand Befehle breitwerfen.

OpenGL ist eine State Machine. Wenn du einen Zustand an einer ganz bestimmten Stelle brauchst, dann setzt du ihn, und machst ihn danach wieder aus/setzt ihn zurück.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Feb 13, 2010 19:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Rischtisch. das glDisable war nur um zu Testen ob es daran liegt. Jetz machst du das wieder raus und sucht dein kopletten Code nach Stellen ab die Texturen verwenden. Un änderst du die folgendermaßen ab:
Code:
  1. glEnable(GL_TEXTURE_2D); //Texturen anschalten
  2. glBindTexture(MyTex);     //Textur binden
  3. //mit der Textur arbeiten
  4. glBindTexture(0);  //Textur entbinden
  5. glDisable(GL_TEXTURE_2D); //Texturen ausschalten

Oder du benutzt die glBitmap von Lossy, die macht das beim binden und entbinden der Texturen automatisch...

MfG Bergmann

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 14, 2010 10:35 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
das Kuriose ist aber, das in meinem gesamten Code die Zeile
Code:
  1. "glenable(gl_texture_2d)";

nicht vorkommt, und trotzdem dunkelt der hintergrund ohne den tipp von dir
Code:
  1. gldisable(gl_texture_2d)
bei der Darstellung eines gradient Hintergrunds ab.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 14, 2010 11:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Du lädst mit Sicherheit irgendwo beim Programmstart Texturen. Wenn ja, dann wird dort glEnable(GL_TEXTURE_2D) aufgerufen.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 14, 2010 12:06 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Sascha Willems hat geschrieben:
Du lädst mit Sicherheit irgendwo beim Programmstart Texturen. Wenn ja, dann wird dort glEnable(GL_TEXTURE_2D) aufgerufen.


hmm...

also ich habe im programm nur eine textur und die wird nicht zum programmstart sondern zur laufzeit (auf user wunsch) geladen, nämlich genau dann, wenn er ein hintergrund bild will.

Code:
  1. procedure TForm1.Bildladen1Click(Sender: TObject);
  2. var laden:topendialog;
  3.  
  4. begin
  5. laden:=topendialog.Create(self);                                    // TOpenDialog erstellen
  6.  
  7. laden.Filter:='.BMP: Windows Bitmap|*.BMP';                         // Filter auf BMP setzen
  8. if laden.execute then
  9. begin
  10.   fTexture := TglBitmap2D.Create;                                   // Instanz der Klasse erstellen
  11.   fTexture.LoadFromFile(laden.filename);                            // Datei laden
  12.   fTexture.RemoveAlpha;
  13.   fTexture.GenTexture;                                              // geladene Textur an OpenGL übergeben
  14.   hintergrundart:=3;
  15.   Hintergrundbild1.checked:=true;
  16.   gradient1.checked:=false;
  17.   einfarbig1.Checked:=false;
  18. end;
  19. end;


aber wie gesagt, das wird erst zur Laufzeit aufgerufen wenn der User ein Hintergrundbild will...
vermutlich hat aber das Text einladen den selben effekt... denn das mache ich zum programmstart über die Textsuite.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 14, 2010 15:56 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Da ist jetzt Lossy gefragt. Bzw. Die glBitmap.pas ist doch OpenSource. Guck doch mal in die Funktionen rein die du aufrufst.

Es ist auch gar nicht wichtig von glEnable steht. Es ist wichtig wo es stehen müsste. Du enablest die Texturen dort wo du sie brauchst, und schaltest sie danach wieder ab.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Feb 14, 2010 19:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hey,

wie ich schon gesagt hab macht die glBitmap beim unbind alles selbst, du musst es nur aufrufen!!!
Code:
  1. Texture.Bind();
  2. //damit arbeiten
  3. Texture.Unbind();
  4.  
  5.  
  6. //so arbeiten die Bind und Unbind-Methoden. Wie man sieht is es das gleiche wie ich oben schon gepostet hab...
  7. procedure TglBitmap.Bind(EnableTextureUnit: Boolean);
  8. begin
  9.   if EnableTextureUnit then
  10.     glEnable(Target);
  11.  
  12.   if ID > 0 then
  13.     glBindTexture(Target, ID);
  14. end;
  15. procedure TglBitmap.Unbind(DisableTextureUnit: Boolean);
  16. begin
  17.   if DisableTextureUnit then
  18.     glDisable(Target);
  19.  
  20.   glBindTexture(Target, 0);
  21. end;


MfG Bergmann.

_________________
Aktuelle Projekte: BumpMapGenerator, Massive Universe Online
Auf meiner Homepage gibt auch noch paar Projekte und Infos von mir.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Feb 18, 2010 07:55 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
so nachdem ich ne Weile wegen Erkältung und Zeitmangel nicht groß dazu gekommen bin, ist mir gestern scheinbar ein Teilerfolg geglückt.

Das umstellen meiner Gradient Procedur auf die Procedur von Bergmann hat zunächst keine Verbesserung gebracht, der Hintergrund hat nach wie vor abgedunkelt.
Aus und wieder Einschalten von GL_Light0 und GL_Lighting um das Hintergrund-Quad mit dem Farbverlauf sorgen hier nun scheinbar dafür das der Hintergrund endlich hell bleibt.

Ob es das wirklich war, kann ich erst abschliessend sagen, wenn ich die Procedur für ein Hintergrundbild ebenfalls analog abgeändert habe. Also morgen.

hier mal die procedur von bergmann - leicht von mir modifiziert:
Code:
  1.  
  2. procedure TForm1.gluDrawBackground(Colors: TMatrix44f);
  3. var Viewport: TVector4i;
  4. begin
  5.   glGetIntegerv(GL_VIEWPORT, @Viewport[0]);       //ViewPort speichern
  6.  
  7.   glMatrixMode(GL_PROJECTION);                    //in die ProjektionsMatrix
  8.   glPushMatrix;                                   //Matrix speichern
  9.   glLoadIdentity;                                 //Matrix zurücksetzen
  10.   glOrtho(0, Viewport[2], Viewport[3], 0, 0, 10); //2D-Sicht festlegen (mit Viewport als Grenzen)
  11.  
  12.   glMatrixMode(GL_MODELVIEW);                     //in die ModelMatrix
  13.   glPushMatrix;                                   //Matrix speichern
  14.   glLoadIdentity;                                 //Matrix zurücksetzen
  15.   gldisable(GL_LIGHT0);
  16.   gldisable(GL_LIGHTING);
  17.   glBegin(GL_QUADS);                              //Hintergrund Zeichnen
  18.     glTexCoord2f(0,0); glColor4fv(@Colors[0][0]); glVertex2f(          0,           0);
  19.     glTexCoord2f(0,1); glColor4fv(@Colors[1][0]); glVertex2f(          0, ViewPort[3]);
  20.     glTexCoord2f(1,1); glColor4fv(@Colors[2][0]); glVertex2f(ViewPort[2], ViewPort[3]);
  21.     glTexCoord2f(1,0); glColor4fv(@Colors[3][0]); glVertex2f(ViewPort[2],           0);
  22.   glEnd;
  23.   glenable(GL_LIGHT0);
  24.   glenable(GL_LIGHTING);
  25.   glMatrixMode(GL_PROJECTION);                    //in die ProjektionsMatrix
  26.   glPopMatrix;                                    //alte Matrix wieder laden
  27.  
  28.   glMatrixMode(GL_MODELVIEW);                     //in die ModelMatrix
  29.   glPopMatrix;                                    //alte Matrix wieder laden
  30.  
  31.   glClear(GL_DEPTH_BUFFER_BIT);                   //Tiefenbuffer löschen
  32. end;


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 47 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.010s | 13 Queries | GZIP : On ]