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

Aktuelle Zeit: Mi Jul 16, 2025 21:57

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



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: NV_Combiner
BeitragVerfasst: Sa Okt 11, 2003 09:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 06, 2003 15:27
Beiträge: 281
Wohnort: Bochum
Im DGL-Bumpmappingtutorial werden ja RegisterCombiners benutzt um das Bumpmapping zu realisieren. stimmt es das diese nur auf NVIDIA-Karten vorhanden sind? wenn ja was muss man benutztn damit es auch auf ATI-Karten läuft ?

_________________
www.extrawurst.org


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 10:04 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Ja,NV_Register_Combiner laufen nur auf NVidia-Karten.Auf ATI-Karten musst du dann halt Vertex bzw. Fragmentprogramme fürs Bumpmapping verwenden. (entweder über ARB_VP/ARB_FP oder ATI_VS/ATI_FS auf älteren ATI-Karten).

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 10:56 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 06, 2003 15:27
Beiträge: 281
Wohnort: Bochum
wie kann ich sowas denn machen das ich im programm beides unterstütze, irgendeine function zum bumpmappng schreiben und da dann gucken ob ne ati-karte oder ne nvidia-karte rin ist, oder wie macht man da am elegantesten?

_________________
www.extrawurst.org


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 11:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Die einzig brauchbare Lösung sind verschiedene Renderpfade für verschiedene Extensions.Das sieht dann in deinem Rendervorgang so aus :
Code:
  1. if glExtSupported(GL_NV_register_combiners) then // (NVidia Geforce4 und kleiner)
  2. ...
  3. else
  4. if glExtSupported(GL_ARB_Fragment_Program) and glExtSupported(GL_ARB_Vertex_Program) then //  (Radeon ab 9500 und GFFX)
  5. ...
  6. else
  7. if glExtSupported(GL_ATI_fragment_shader) and glExtSupported(GL_ATI_vertex_shader) then //  (Radeon <9500)
  8. ...
  9.  

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 11:19 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Okt 26, 2002 17:14
Beiträge: 188
Wohnort: Hannover/Lüneburg
Wobei man auch auf einer ATI Radeon 8500 auf GL_ARB_Vertex_Program zurückgreifen kann.

_________________
Thunderman
Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung. Klar?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 11:24 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Bei Delphi3D gibt es eine Demo, die das für GF1/2, GF3,4 und GFFX mit verschiedenen Renderpfaden macht. Da wurde eine Basisklasse für das Rendern des Lichtes erstellt und für die speziellen Karten die Methoden überschrieben. Die Klasse wird aus eine DLL geladen, so daß jeweils nur der Dateiname bei LoadLibrary geändert werden muß.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 11:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Da Stimme ich SOS zu. Allerdings habe ich ein paar Anmerkungen.
Die ATI Karten haben keine eigene VertexShaderExtension. Sie benutzen die GL_EXT_vertex_shader. (bevor sich jemand wundert)

Und eine Sache die ich persönlich anders gestalten würde. Ich würde erst einmal überprüfen, ob die kartenübergreifenden Extensions unterstützt werden. Also ARB's und wenn dies nicht der Fall ist würde ich auf die einzelnen Karten genauer eingehen (also mit kartenspezifischen Extensions). Das ist aber reine Geschmakssache und macht im Endeffekt beim Programm nichts.

Die Kartenhersteller schreiben die Treiber so, dass die ARB's nach Möglichkeit überall unterstützt werden. So kann zum Beispiel eine TNT2 auch GL_ARB_vertex_buffer_objects. Das wird allerdings nur durch den Treiber emuliert. Es bringt auf diesen Karten kaum Vorteile aber man kann so mittels einer Extension neue und auch alte Hardware ansprechen. Das spart im Endeffekt Programmierarbeit.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 11, 2003 11:43 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Stimmt.
Das Bumpmapping aus dem Tutorial könnte man auch auch mit ARB_texture_env_dot3 umsetzen.

Code:
  1. glActiveTextureARB(GL_TEXTURE0_ARB);
  2. glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_ARB);
  3. glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB,GL_DOT3_RGBA_ARB);
  4. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_ARB,gl_primary_color);
  5. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_ARB,GL_SRC_COLOR);
  6. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_ARB,gl_texture);
  7. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_ARB,GL_SRC_COLOR);
  8.  
  9. glActiveTextureARB(GL_TEXTURE1_ARB);
  10. glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_COMBINE_ARB);
  11. glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB,gl_modulate);
  12. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_ARB,gl_previous_arb);
  13. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_ARB,GL_SRC_COLOR);
  14. glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_ARB,gl_texture);
  15. glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_ARB,GL_SRC_COLOR);


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


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