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

Aktuelle Zeit: Fr Jul 18, 2025 04:28

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



Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Problem mit glCopyTexImage2D
BeitragVerfasst: Sa Aug 02, 2008 15:28 
Offline
DGL Member
Benutzeravatar

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

ich hab mir gestern das Tutorial zum RenderPass angesehen. Das einzige was noch nicht geht ist, dass er den Inhalt vom Color-Buffer auf die Textur überträgt. Im Tutorial wird das mit glCopyTexImage2D gemacht:

Code:
  1.   glBindTexture(GL_TEXTURE_2D, Screen);
  2.   glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 256, 256, 0);


bei mir is die Textur danach immer weiß.
hat jmd ne ahnung woran das liegen könnte?

MfG & Thx Bergmann


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 02, 2008 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hmm... Ich kann da jetzt keinen Fehler erkennen. Hast du beim Zeichnen GL_TEXTURE_2D aktiviert (glEnable) und auch wirklich die Textur gebunden?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 02, 2008 18:58 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Texturkoordinaten sollten auch vorhanden sein, die vergisst man ganz gerne mal :O

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 02, 2008 19:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Schon, aber dann ist es eher selten weiß, sondern andersweitig einfarbig (eben die Farbe von der oberen linken Ecke oder so).

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 02, 2008 19:12 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 16, 2008 20:26
Beiträge: 158
Wohnort: Berlin
Programmiersprache: c++,c#,java,ruby,php
Bei mir war es dann immer weiß, weil der ambiente Anteil viel zu hoch war. Vor Allem am anfang kann man vieles falsch machen. Den der Fehler steckt meistens im Detail und ohne Code kann man ja nicht viel mehr sagen.

_________________
System: Phenom XII X4 955 3,21Ghz , GTX 560 TI, 4GB-Ram, Windows 7 64x


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 01:01 
Offline
DGL Member
Benutzeravatar

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

GL_TEXTURE_2D ist aktiviert. Und so zeichne ich das Quad:
Code:
  1.   glPushMatrix;
  2.   glTranslatef(0,0,-10);
  3.   glBindTexture(GL_TEXTURE_2D,Screen);
  4.   glBegin(GL_QUADS);
  5.     glColor3f(1,1,1);
  6.     glTexCoord2f(0,1); glVertex3f(-2, 1.5, 0);
  7.     glTexCoord2f(0,0); glVertex3f(-2,-1.5, 0);
  8.     glTexCoord2f(1,0); glVertex3f( 2,-1.5, 0);
  9.     glTexCoord2f(1,1); glVertex3f( 2, 1.5, 0);
  10.   glEnd;
  11.   glPopMatrix;

ich kann auch keinen Fehler finden, deshlab hab ich ja das Thema auf gemacht^^
hab nochwas rau gefunden: nich die Textur wird weiß, sondern das is die Farbe,
die ich vorher festgelegt hab! Also wird die Textur gar nich gezeichnet? Wenn ich
jetzt aber ne Textur aus ner Datei lad, dann haut alles hin! komisch!

MfG Bergmann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 01:03 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Ist Screen eine TextureID? D.h. hast du glGenTexture vorher ausgeführt?

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 01:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
ja, das hab ich so gemacht (siehe Tutorial RenderPass):

Code:
  1. procedure TForm1.CreateScreenTexture;
  2. var pTexData: Pointer;
  3. begin
  4.   GetMem(pTexData,256*256*3);
  5.  
  6.   glGenTextures(1,@Screen);
  7.   glBindTexture(GL_TEXTURE_2D, Screen);
  8.  
  9.   glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData);
  10.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  11.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  12.  
  13.   FreeMem(pTexData);
  14. end;


und CreateScreenTexture hab ich direkt nach InitOpenGL aufgerufen, sonst kommt ein Fehler!
Code:
  1.  
  2. procedure TForm1.FormCreate(Sender: TObject);
  3. begin
  4.   DC := GetDC(Handle);
  5.   if not InitOpenGL then Application.Terminate;
  6.   CreateScreenTexture;
  7.   RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  8.   ActivateRenderingContext(DC,RC);
  9.  
  10.   Application.OnIdle := IdleHandler;
  11.  
  12.   SetupOpenGL;
  13.   SetupVSync(False);
  14.   Init;
  15. end;


Mfg Bergmann.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 09:51 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Code:
  1.   CreateScreenTexture;
  2.   ...
  3.   ActivateRenderingContext(DC,RC);


Genau da liegt dein Problem. Du erstellst die Textur obwohl noch garkein Renderkontext aktiv ist. Du bekommst dann einfach keine gültige Texturen-ID.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 09:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Uhm, ich glaube du musst erst einen Kontext haben, bevor du mit IDs rumspielen darfst.

Und falls es dann immernoch nicht klappt, setz mal die glTexParameteri aufrufe auch vor glTexImage2D. Ich meine, da war mal was.

Gruß Lord Horazont

//Edit: Oh da war ja wer schneller...

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Zuletzt geändert von Lord Horazont am So Aug 03, 2008 15:50, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 15:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Komisch jetzt gehts, wo ich's das letzte ma nach dem RC aufgerufen hab kahm immer n fehler...
Auf jedenfall hab ich jetzt n anderes Problem und zwar wird meine Szene dunkel wenn ich CreateScreenTexture aufgerufen hab. siehe Screenshot.

MfG Bergmann.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 15:03 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Unbinde mal die Textur nachdem du sie gezeichnet hast (glBindTexture(GL_TEXTURE_2D, 0);) bzw deaktiviere die Textureinheit (glDisable(GL_TEXTURE_2D);).

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 15:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Hm, gut. jetzt is die Farbe wieder normal, aber auf meinem Quad is immer noch keine Textur. Nur scharz, und die weißen Fetzen unten und oben! hab auch schonmal nachgesehen, ob die Szene die auf die Textur kommt richtig dargestellt wird: sieht ordentlich aus.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 15:46 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Mich würde interessieren, ob du vorher Viewport und Projektion auf die Texturgröße anpasst. Denn wenn du nur 256x256 Pixel aus dem Viewport kopierst und der immernoch deine Fenstergröße hat, kann das auch komisch enden.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Aug 03, 2008 16:54 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 18:56
Beiträge: 1213
Programmiersprache: Delphi/FPC
Ja, hab ich. Am besten ich poste ma den Quelltext:

Code:
  1. procedure TForm1.RenderObjects; //Pyramide und Kegel Rendern
  2. var i,iMax: Integer;
  3. var Alpha,x,y: single;
  4. begin
  5.   glPushMatrix;
  6.   glTranslatef(2,-2,0);
  7.   glRotatef(Angle/3,0,1,0);
  8.   glBegin(GL_TRIANGLE_FAN);
  9.     glColor3f(1,0,0); glVertex3f( 0, 1, 0);
  10.     glColor3f(0,1,1); glVertex3f(-1,-1, 1);
  11.     glColor3f(0,0,1); glVertex3f( 1,-1, 1);
  12.     glColor3f(1,0,1); glVertex3f( 1,-1,-1);
  13.     glColor3f(1,1,0); glVertex3f(-1,-1,-1);
  14.     glColor3f(0,1,1); glVertex3f(-1,-1, 1);
  15.   glEnd;
  16.   glPopMatrix;
  17.  
  18.   glPushMatrix;
  19.   glTranslatef(-2,-2,0);
  20.   glRotatef(-Angle,0,1,0);
  21.   glBegin(GL_TRIANGLE_FAN);
  22.     glColor3f(0,0,1); glVertex3f( 0, 0, 1);
  23.     glColor3f(1,1,0);
  24.     iMax := 50;
  25.     for i := iMax downto 0 do
  26.       begin
  27.         alpha := 360*i/iMax;
  28.         x := 3*sin((alpha/180)*pi);
  29.         y := 3*cos((alpha/180)*pi);
  30.         glVertex3f(0.5*x,0.5*y,0);
  31.       end;
  32.   glEnd;
  33.  
  34.   glBegin(GL_TRIANGLE_FAN);
  35.     glColor3f(0,1,0); glVertex3f( 0, 0, -0.5);
  36.     glColor3f(1,0,0);
  37.     iMax := 50;
  38.     for i := 0 to iMax do
  39.       begin
  40.         alpha := 360*i/iMax;
  41.         x := 3*sin((alpha/180)*pi);
  42.         y := 3*cos((alpha/180)*pi);
  43.         glVertex3f(0.5*x,0.5*y,0);
  44.       end;
  45.   glEnd;    
  46.   glPopMatrix;
  47. end;
  48.  
  49. procedure TForm1.RenderScreen; //textur Rendern
  50. begin
  51.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  52.  
  53.   glViewport(0,0,256,256);
  54.   glMatrixMode(GL_PROJECTION);
  55.   glLoadIdentity;
  56.   gluPerspective(45, 1, NearClipping, FarClipping);
  57.  
  58.   glMatrixMode(GL_MODELVIEW);
  59.   glLoadIdentity;
  60.  
  61.   glTranslatef(0,0,-10);
  62.   RenderObjects;
  63.  
  64.   glBindTexture(GL_TEXTURE_2D, Screen);
  65.   glCopyTexImage2D(Screen, 0, 3, 0, 0, 256, 256, 0);
  66. end;
  67.  
  68. procedure TForm1.Render; //eigentliche Szene rendern
  69. var i, iMax: Integer;
  70. var x,y, Alpha: Single;
  71. begin
  72.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  73.  
  74.   glViewport(0,0,ClientWidth,ClientHeight);
  75.   glMatrixMode(GL_PROJECTION);
  76.   glLoadIdentity;
  77.   gluPerspective(45, ClientWidth/ClientHeight, NearClipping, FarClipping);
  78.  
  79.   glMatrixMode(GL_MODELVIEW);
  80.   glLoadIdentity;
  81.  
  82.   glTranslatef(0,0,-10);
  83.  
  84.   glPushMatrix;
  85.   glTranslatef(-3,2,0);
  86.   glRotatef(20,0,1,0);
  87.   glEnable(GL_TEXTURE_2D);
  88.   glBindTexture(GL_TEXTURE_2D,Screen);
  89.   glBegin(GL_QUADS);
  90.     glColor3f(1,1,1);
  91.     glTexCoord2f(0,1); glVertex3f(-2, 1.5, 0);
  92.     glTexCoord2f(0,0); glVertex3f(-2,-1.5, 0);
  93.     glTexCoord2f(1,0); glVertex3f( 2,-1.5, 0);
  94.     glTexCoord2f(1,1); glVertex3f( 2, 1.5, 0);
  95.   glEnd;
  96.   glPopMatrix;
  97.  
  98.   glPushMatrix;
  99.   glTranslatef(3,2,0);
  100.   glRotatef(-20,0,1,0);
  101.   glBegin(GL_QUADS);
  102.     glColor3f(1,1,1);
  103.     glTexCoord2f(0,1); glVertex3f(-2, 1.5, 0);
  104.     glTexCoord2f(0,0); glVertex3f(-2,-1.5, 0);
  105.     glTexCoord2f(1,0); glVertex3f( 2,-1.5, 0);
  106.     glTexCoord2f(1,1); glVertex3f( 2, 1.5, 0);
  107.   glEnd;
  108.   glPopMatrix;
  109.   glDisable(GL_TEXTURE_2D);
  110.  
  111.   RenderObjects;
  112.  
  113.   SwapBuffers(DC);
  114. end;


MfG Bergmann


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 14 Queries | GZIP : On ]