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

Aktuelle Zeit: Fr Jul 18, 2025 08:49

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



Ein neues Thema erstellen Auf das Thema antworten  [ 68 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
BeitragVerfasst: Mi Sep 22, 2010 19:41 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
Ahh ich werds einfach mal probieren.. Gibts denn ne möglichkeit die TU mit ner Variable zu setzen anstatt mit Konstanten?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 22, 2010 19:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Code:
glActiveTexture(GL_TEXTURE0 + i)

;)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 22, 2010 19:59 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ach mensch.. das ich da net allein drauf gekommen bin.. :oops:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 22, 2010 20:10 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
achsoo. was besteutet eigentlich immer das ARB?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 22, 2010 20:14 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Das es sich um eine ARB-Extension handelt:
http://wiki.delphigl.com/index.php/ARB

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 22, 2010 21:09 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
nun es gibt ja glActiveTexture und glActiveTextureARB gibts denn da einen Unterschied?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Sep 22, 2010 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Die ARB-Version gehört zur Extension GL_ARB_multitexture, die andere zum OpenGL-Kern. Solche Funktionen können sich unterschiedlich Verhalten, darum haben die ja einen anderen Namen. Das lesen der Spezifikation hilft: Im Fall von glActiveTexture gehört diese seit OpenGL 1.2.1 zum Kern. Sofern du also OpenGL >= 1.2.1 voraussetzt brauchst du nicht die Extension benutzen. Falls du z.B. auch OpenGL 1.2.0 zulassen willst musst du beim Start deiner Anwendung testen ob die Extension GL_ARB_multitexture verfügbar ist und glActiveTextureARB statt glActiveTexture benutzen. In jedem Fall solltest du eine Extension entweder konsequent benutzen oder nicht. D.h. alles was eine Extension mitbringt benutzen oder gar nichts davon, Mischungen können gefährlich werden. Das erklärt sich vielleicht besser am Beispiel von Shadern: Einen Shader mit der Funktion der Extension compilieren aber dann später mit der Funktion des OpenGL 2.0 Kerns linken könnte (muss aber nicht) zu Problemen führen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 07:25 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
ahh jetzt hats klick gemacht ;) mercie für die Ausführliche Erklärung. :)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 14:11 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
hab noch ne kurze Shaderfrage: Wenn ich meinem Shader eine Matrix mittels z.b. glUniformMatrix4fv(glGetUniformLocation(shader.ProgramObject, 'TexGenMat1'), 1, false, @tMat); zuweise, wird diese dann sofort in den Grafikspeicher kopiert, oder wird nur der Pointer gespeichert?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 14:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Die Daten werden auf jeden Fall kopiert. Ob sie auch direkt in den Grafikspeicher geschoben werden ist nicht definiert.
=> Du kannst den Speicherbereich anschließend ruhig freigeben oder anderweitig nutzen. (Was vermutlich deine eigentliche Frage war)

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 15:39 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
also ich bin jetzt schon stunden am suchen doch finde den Fehler nich. Für einen Projektor hab ichs ja bereits mit Shadern hinbekommen. Doch für 2 hat es einfach nicht hin. Hier mal der entscheidene Codeabschnitt:
Code:
     ProjectorPersp :=  lights[i].BeamAngle * lights[i].Zoom + 2; //Abstrahlwinkel
     glMatrixMode(GL_TEXTURE);
        glPushMatrix;
         glLoadIdentity;
         // Texturenmatrix skalieren und an 0..1 anpassen
         glTranslatef(0.5, 0.5, 0);
         glScalef(0.5, 0.5, 1);
        // Projekorperspektive setzen
        gluPerspective(ProjectorPersp, 1, 0.1, 1);
        MatrixInvert(lights[i].texMatrix);    //ModelView Matrix aus sicht des Projektors
        glMultMatrixf(@lights[i].texMatrix);
        glMultMatrixf(@NormalCamMatrix); //Modelview der Cam
        glGetFloatv(GL_TEXTURE_MATRIX, @tMatArr[i]);

      if i=0 then
          glUniformMatrix4fv(glGetUniformLocation(shader.ProgramObject, 'TexGenMat0'), 1, false, @tMatArr[0]);

      if i=1 then
          glUniformMatrix4fv(glGetUniformLocation(shader.ProgramObject, 'TexGenMat1'), 1, false, @tMatArr[1]);

      glPopMatrix;


Dieser läuft in einer schleife (aktuell nur 2x) und dann wird die Sache gerendert. Der 1. Projektor, quasi der erste durchlauf funktioniert top, doch beim zweitem mal stimmt die erzeuge Texturmatrix nicht mehr.. Durch das Push/Pop dürfte sich jedoch nix geändert haben oder?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 15:53 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also das sieht so richtig aus soweit ich das von hier sagen kann.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 16:00 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
wie gesagt einzeln kann ich das durchlaufen lassen, aber nicht zweimal hintereinander.. denn dann stimmt die 2. Matrix net..


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 16:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Wie sieht den der Shader aus? Ich würde da einen Copy&Paste-Fehler vermuten. D.h. bei der 2. Projektion benutzt du irgendwelche Daten die zur 1. Projektion gehören. Woran machst du fest das die zweite Texturmatrix nicht richtig ist?

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Sep 23, 2010 16:44 
Offline
DGL Member

Registriert: Do Apr 22, 2010 17:17
Beiträge: 543
hab den Fehler gefunden, doch wie so immer lag er nicht da wo ich gesucht habe... Warum sucht man immer nur an den komplizierten Stellen??!?! 8)


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


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 13 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.008s | 16 Queries | GZIP : On ]