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

Aktuelle Zeit: So Jun 16, 2024 14:17

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Apr 02, 2011 19:41 
Offline
DGL Member

Registriert: Sa Apr 02, 2011 10:01
Beiträge: 9
Hallo,

ich bin mir nicht ganz sicher ob meine Daten aus dem VBO richtig beim Vertexshader ankommen. Kann man das überprüfen? Jendenfalls laufen sowohl Vertex- als Fragmentshader. Die Shaderinfologs und das Shaderprogramminfolog sind leer. Ansonsten siehts schematisch bei mir so aus:

- FBO binden
- Zieltextur an FBO attachen
- setting stuff (kamera, enables, disables,...)
- get attribute location für "InVertex"
- binden der attribute location
- shaderprogramm nochmal linken
- use programm
- vbo binden
- vertex attribbute array enablen
- vertex attribute pointer mit der location von vorhin, 4 komponenten pro vertex, type GL_FLOAT, normalisierung = false, stride = 0 und startpunkt 0 im vbo setzen
- rendering mit glDrawArrays
- disablen des vertex attribute array
- der restliche aufräumkram

und im vertex shader erwarte ich eigentlich bei " in vec4 InVertex " jeweils die vertices aus dem vbo.
hab ich was offensichtliches falsch gemacht/ vergessen?

Wäre schön, wenn mir jemand helfen könnte.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 03, 2011 09:57 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also ich erwarte meinen Vertex in GL_VERTEX, aber ich bin auch noch in der OpenGL Steinzeit von GL 2.1. Vielleicht hilftst aber dennoch ;)

greetings

_________________
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  
BeitragVerfasst: So Apr 03, 2011 13:31 
Offline
DGL Member

Registriert: Sa Apr 02, 2011 10:01
Beiträge: 9
Vielen Dank für die Antwort.
Ich hab beides ausprobiert sowohl die kombination mit glvertexattributepointer und InVertex als auch glvertexpointer und gl_Vertex. und beides hat mich nicht zu meinem gewünschten ergebnis gebracht.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Apr 03, 2011 13:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Zeig mal wie du dein VBO füllst. Hast du auch die Client-States aktiviert (glEnableClientState(GL_VERTEX_ARRAY); und so)?

greetings

_________________
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  
BeitragVerfasst: Mo Apr 04, 2011 15:21 
Offline
DGL Member

Registriert: Sa Apr 02, 2011 10:01
Beiträge: 9
Also ich befülle das VBO immer schritt für schrit mit ner for-schleife und der Funktion:

Code:
 glBufferSubData( GLenum target, GLuint offset, GLsizeptr size, GLvoid* data );


vorher habe ich natürlich die Gesamtgröße des VBOs mit:

Code:
  glBufferDataARB(GLenum target, GLsizeptr size, GLvoid* data, GLenum usage);


angegeben. Ich bin mir allerdings nicht sicher wie ich nun die Daten des VBOs an den Vertexshader weiterleite. Momentan siehts bei mir so aus:

    Shader und Programm bestimmen, kompilieren und linken
    loc = glGetAttribLocation( programHandle, "InVertex" )
    FBO und GL Kram
    vbo bind
    glVertexAttribPointer(loc, 4, GL_FLOAT, GL_FALSE, 0, vbo.offset(0) )

wobei offset wie folgt definiert ist:

Code:
   char* offset(unsigned int _offset) const
  {
    return ((char*)NULL + _offset);
  }


    danach kommt das Enablen mit glEnableVertexAttribArrayARB(loc);
    textur binden
    an dieser stelle würde ich gerne das vbo rendern mit glDrawArrays(GL_POINTS, 0, bufferSize/(4*sizeof(GL_FLOAT)) )
    disablen des attributs glDisableVertexAttribArrayARB(loc);

ich habe mehr oder weniger bewusst kein glEnableClientState(GL_VERTEX_ARRAY) aktiviert/deaktiviert, weil ich dachte, dass man das nur bei Vertex arrays braucht. oder brauch ich das auch für vbos?

Könnt ihr in der Abfolge ( diese sieht dann ja doch ein wenig anders aus als der erste beitrag ;) ) sehen ob ich noch etwas vergessen habe oder gar falsch mache?


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Apr 04, 2011 15:59 
Offline
DGL Member

Registriert: Sa Apr 02, 2011 10:01
Beiträge: 9
habt einer von euch schonmal gDEBugger verwendet? dort kann man sich unter anderem Textureninthalte und Vertexbufferinhalte anzeigen lassen. Jedoch bekomme ich bei vielen Einträgen entweder "nan" raus oder extrem winzige zahlen à la -e^ 30 . wenn mir den bufferinhalt mit
glGetBufferSubData() ausgeben lasse kommen ordentliche zahlen raus, die auch meiner eingabe entsprechen.
Welche Zahlen sind nun richtig?


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


Wer ist online?

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