DGL
https://delphigl.com/forum/

[gelöst] Wie funzen Texture-Lookups im Vertexshader?
https://delphigl.com/forum/viewtopic.php?f=20&t=8356
Seite 1 von 1

Autor:  Ireyon [ Do Apr 16, 2009 18:17 ]
Betreff des Beitrags:  [gelöst] Wie funzen Texture-Lookups im Vertexshader?

Moinmoin.

Ich hab ja tatsächlich mal wieder ein Problem: Ich will im Vertexshader auf eine Textur zugreifen, mache das auch genau so wie im Fragmentshader (wo es ja geht) und bumm - es hängt sich derbst auf, ohne Meldung und so. Die Textur ist eine ganz normale Textur mit 4 Farbkanälen und 1024x1024 Pixeln Größe.
Wie geht das denn sonst im VS? :(
Oder kann das daran liegen, dass mein Grafikchip noch kein ShaderModel 4 kann? (ist ein GeForce 6100-Onboard-Chip, meine Graka ist mir vor vier Wochen durchgebrannt)
Hab den aktuellen 180er-Treiber mit Xorg 1.6 laufen.

MfG
Ireyon

Autor:  Coolcat [ Do Apr 16, 2009 18:26 ]
Betreff des Beitrags: 

Also ShaderModel 4.0 brauchst du dafür nicht. Was ist den der Wert von GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB ? Das ist die Anzahl der Texturen die du maximal im Vertexshader nutzen kannst. Wenn der Wert 0 ist, unterstützt deine Karte (oder Treiber) das nicht.

Unter Linux kannst du diesen Wert bequem mit "glxinfo -l" abfragen.

Ansonsten irgendwo am Anfang folgendes in dein Programm einbauen:
Code:
  1. GLint tmp;
  2. glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, &tmp);
  3. std::cout << "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB=" << tmp << "\n";

Autor:  Coolcat [ Do Apr 16, 2009 18:32 ]
Betreff des Beitrags: 

Also dein Treiber sollte das schon mal packen, dann liegt es wohl an der Karte. Bei mir sieht das (stark gekürzt) so aus:

Code:
  1. [coolcat@q9300 ~]$ glxinfo -l
  2. (...)
  3. direct rendering: Yes
  4. (...)
  5. OpenGL vendor string: NVIDIA Corporation
  6. OpenGL renderer string: GeForce 9800 GT/PCI/SSE2
  7. OpenGL version string: 3.0.0 NVIDIA 180.29
  8. OpenGL shading language version string: 1.30 NVIDIA via Cg compiler
  9. OpenGL extensions:
  10.     (...)
  11. OpenGL limits:
  12.     (...)
  13.     GL_VERTEX_SHADER_ARB:
  14.         GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 4096
  15.         GL_MAX_VARYING_FLOATS_ARB = 60
  16.         GL_MAX_VERTEX_ATTRIBS_ARB = 16
  17.         GL_MAX_TEXTURE_IMAGE_UNITS_ARB = 32
  18.         GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 32
  19.         GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 32
  20.         GL_MAX_TEXTURE_COORDS_ARB = 8
  21.     GL_FRAGMENT_SHADER_ARB:
  22.         GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 2048
  23.         GL_MAX_TEXTURE_COORDS_ARB = 8
  24.         GL_MAX_TEXTURE_IMAGE_UNITS_ARB = 32
  25. (....)

Autor:  Ireyon [ Do Apr 16, 2009 18:46 ]
Betreff des Beitrags: 

Spuckt bei mir 4 aus. Die Textur, die ich da verwenden will, sitzt btw in Textur-Unit 2. Das interne Format hab ich mal auf GL_RGBA32F_ARB gesetzt, es geht nicht.

Danke aber für die flotten Antworten.


Edit: Filtering ausgeschaltet → Geht :)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/