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

Aktuelle Zeit: Fr Jul 18, 2025 00:43

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Mär 23, 2006 19:00 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
Moin :-)

Ich habe mich heute mal mit dem Tut zu RenderPass beschäftigt. Und nachdem ich alles eingetippelt habe und glaubte es verstanden zu haben, habe ich leider nur 3 schwarze Monitore übrig behalten.

Vielleicht weis einer von euch, warum mir meine Kegel nicht anzeigt werden :-(

Code:
  1.  
  2.  
  3. var
  4.   tex1 : TGLuint;
  5.  
  6. CreateScreenTexture; - wird in FormCreate ausgeführt.
  7.  
  8. procedure TForm1.CreateScreenTexture;
  9. var
  10.   pTexData: Pointer;
  11. begin
  12.   GetMem(pTexData, 256*256*3);
  13.  
  14.   // Textur generieren und drauf zeigen
  15.   glGenTextures(1, @tex1);
  16.   glBindTexture(GL_TEXTURE_2D, tex1);
  17.  
  18.   // Daten in den Speicher, Lineares Filtering aktivieren
  19.   glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, pTexData);
  20.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  21.   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  22.  
  23.   // Freigeben
  24.   FreeMem(pTexData);
  25. end;
  26.  
  27. procedure TForm1.Render;
  28. begin
  29.   glClearColor(0.0,0.0,0.0,0);
  30.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  31.  
  32.   glViewport(0, 0, 256, 256);
  33.  
  34.   glMatrixMode(GL_PROJECTION);
  35.   glLoadIdentity;
  36.   gluPerspective(60, ClientWidth/ClientHeight, NearClipping, FarClipping);
  37.  
  38.   glMatrixMode(GL_MODELVIEW);
  39.   glLoadIdentity;
  40.   glEnable(GL_LINE_SMOOTH);
  41.   glEnable(GL_DEPTH_TEST);
  42.   glEnable(GL_TEXTURE_2D);
  43.   glDisable(GL_CULL_FACE);
  44.  
  45.   glTranslatef(x, y, z);
  46.   glRotatef(t, 0, 1, 0);
  47.   glRotatef(t1, 0, 0, 1);
  48.  
  49.   glColor3f(1, 1, 1);
  50.   glPushMatrix;
  51.  
  52.   Render2;
  53.  
  54.   glBindTexture(GL_TEXTURE_2D, tex1);
  55.   glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 256, 256, 0);
  56.  
  57.   glClearColor(0,0.0,0.3,0);
  58.   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  59.   glViewport(0, 0, ClientWidth, ClientHeight);
  60.   glBindTexture(GL_TEXTURE_2D,tex1);
  61.  
  62.   glPopMatrix;
  63.  
  64.   Action;
  65.  
  66.   SwapBuffers(DC);
  67. end;
  68.  
  69. procedure TForm1.render2;
  70. var
  71.   Quad2, Quad : PGLUquadric;
  72. begin
  73.   glRotatef(90, 1, 0, 0);
  74.   glTranslatef(-0.5, 0, 0);
  75.   glColor3f(1,0.2,0.4);
  76.   Quad := gluNewQuadric;
  77.   gluCylinder(Quad, 0, 0.4, 1, 20, 20);
  78.  
  79.   glTranslatef(1, 0, 0.5);
  80.   glColor3f(0.3,0.3,1);
  81.   Quad2 := gluNewQuadric;
  82.   gluCylinder(Quad2, 0, 0.4, 1, 20, 20);
  83. end;
  84.  
  85. procedure TForm1.Action;
  86. begin
  87. // Screen links
  88.   glBegin(GL_QUADS);
  89.     glTexCoord2f(0,0); glVertex3f(-3, -1, 0);
  90.     glTexCoord2f(0,1); glVertex3f(-3, 1, 0);
  91.     glTexCoord2f(1,1); glVertex3f(-1, 1, -1);
  92.     glTexCoord2f(1,0); glVertex3f(-1, -1, -1);
  93.   glEnd;
  94. // Screen rechts
  95.   glBegin(GL_QUADS);
  96.     glTexCoord2f(0,0); glVertex3f(1, -1, -1);
  97.     glTexCoord2f(0,1); glVertex3f(1, 1, -1);
  98.     glTexCoord2f(1,1); glVertex3f(3, 1, 0);
  99.     glTexCoord2f(1,0); glVertex3f(3, -1, 0);
  100.   glEnd;
  101. // Screen links
  102.   glBegin(GL_QUADS);
  103.     glTexCoord2f(0,0); glVertex3f(-0.8, 0, -1);
  104.     glTexCoord2f(0,1); glVertex3f(-0.8, 1.5, -1);
  105.     glTexCoord2f(1,1); glVertex3f(0.8, 1.5, -1);
  106.     glTexCoord2f(1,0); glVertex3f(0.8, 0, -1);
  107.   glEnd;
  108. end;
  109.  
  110.  

_________________
Schönen Gruß, Sky.


Zuletzt geändert von ShadowOfSky am Sa Mär 25, 2006 20:29, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 19:04 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Bescheuerte Frage: Den Download kennst Du? http://www.delphigl.com/do_download.php?f=503
IMAO beinhaltete dieser SourceCode einen Fehler (Falscher Pointer oder sowas) habe eine Übersetzung des ganzen nach easySDL gemacht, die allerdings noch nicht abgeschlossen ist und ich bin leider momentan 3D-los ;) Beim spontanen überfliegen sehe ich allerdings keinen Fehler.

_________________
"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: Sa Mär 25, 2006 20:46 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
:-) ja ich hatte das Bsp mal angeschaut. Und ich bin mir nicht sicher, aber ich glaube ich habe einen Unterschied gefunden (deine Version funktioniert):

bei dir steht drin:
// Textur generieren und drauf zeigen
glGenTextures(1, Screen); <----- ohne @ - Zeichen
glBindTexture(GL_TEXTURE_2D, Screen);

und bei mir:

// Textur generieren und drauf zeigen
glGenTextures(1, @tex1); <------ mit @ - Zeichen
glBindTexture(GL_TEXTURE_2D, tex1);

Ich kann es bei mir auch nicht weglassen, weil dann kommt:
Es gibt keine überladene Version von 'glGenTextures', die man mit diesen Argumenten aufrufen kann (benutze bei mir die SDL-Unit).

Und wenn ich bei deiner Version das Adress Operator Zeichen benutze kommt die Fehlermeldung:
Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen.

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 20:55 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
So ich habe es zwar gefunden, was das für ein Fehler war und zwar war bei deiner Version das hier:

procedure glGenTextures(n: GLsizei; var textures: GLuint); stdcall; external opengl32;

durch das var drin, wollte er bei deiner Version die Adresse nicht.

hmm....aber leider geht es bei mir immer noch nicht :-(

Ich werde mal weiter beide Versionen vergleichen.

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
jetzt seh ich was, nur kann ich es mir nichr richtig erklären.

Und zwar wenn ich die Werte vom ersten:
glClearColor(0,0,0,0);

auf zum Beispiel grün setze(Hintergrundfarbe), dann sehe ich meine beiden Kegel, welche zum einen rot und zum anderen blau sind. Nur sind sie auf meinem Ausgabefenster schwarz. Deshalb konnte ich sie vorher nicht sehen, weil schwarz auf schwarz (oder weisser Adler auf weisser Flagge :-) ).

Jetzt bleibt also die Frage, warum meine Kegel schwarz bleiben, obwohl ich ihnen doch Farben gegeben habe :-(

PS: Ich habe nun mal den Source hinten dran gehängt.


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

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 25, 2006 22:39 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Feb 02, 2005 14:22
Beiträge: 81
In einer Render Prozedur steht:

Code:
  1. ...
  2. glViewport(0, 0, ClientWidth, ClientHeight);
  3. glBindTexture(GL_TEXTURE_2D,tex1);
  4.  
  5. glPopMatrix;
  6.  
  7. Action;
  8.  
  9. SwapBuffers(DC);
  10. ...


Mach da mal folgendes draus:

Code:
  1. ...
  2. glViewport(0, 0, ClientWidth, ClientHeight);
  3. glBindTexture(GL_TEXTURE_2D,tex1);
  4.  
  5. glPopMatrix;
  6.  
  7. Action;
  8. Render2;
  9.  
  10. SwapBuffers(DC);
  11. ...


Du wirst sehen, dass deine original Zylinder schwarz sind. Daher ist natürlich auch das Spiegelbild schwarz.
Überprüf doch mal deine glColor3f Befehle und glClearColor(); bzw. glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); Befehle.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 28, 2006 21:06 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
Nein da dran liegt es nicht. Ich bin nun mal Zeile für Zeile durchgegangen und habe festgestellt, wenn ich diese Zeile rausnehme, sind die Kegel wieder farbig und wenn ich sie wieder rein nehme werden sie wieder schwarz :-(

Code:
  1.  
  2. //  glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 256, 256, 0);
  3.  


Und ich hab keine Ahnung warum :-(

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 29, 2006 16:30 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
Und da bin ich wieder einmal. Jetzt scheint alles zu klappen, aber zu frieden bin ich immer noch nicht :-(

Ich habe vor den glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, 256, 256, 0); Befehl, weil mir das alles so schwarz vor kam, einfach mal mit glColor3F(1, 1, 1); die Farbe auf weiß gesetzt. Und was soll ich sagen, danach hatte ich einen weissen Hintergrund in den 3 Screens und meine bunten Kegel konnte man in Farbe bewundern.

Aber ich glaube nicht das das der Sinn des ganzen ist. Irgend was läuft nicht so wie es eigentlich laufen sollte :-(

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Mär 30, 2006 13:54 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Wow...das klingt für mich nach einem Problem mit Texturing. Du scheinst die Texturierung nicht zu deaktivieren, wenn du sie nicht brauchst. Kann das sein?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 31, 2006 17:06 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mär 04, 2006 22:54
Beiträge: 32
Danke Flash, das war es - ich hatte die ganze Zeit die Textur an und zwischen durch nicht abgeschaltet.

_________________
Schönen Gruß, Sky.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Mär 31, 2006 17:25 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Notfalls schau mal ins DGLSDK-SVN.
Dort hat Phobeus eine funktionierende Version des Renderpassbeispiels hochgeladen.
Ist zwar noch frisch und er arbeitet noch dran, aber der entsprechende Teil funktioniert dort.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.009s | 14 Queries | GZIP : On ]