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

Aktuelle Zeit: Do Okt 19, 2017 19:09

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: glVertexAttribPointer Parameter
BeitragVerfasst: Mi Apr 19, 2017 16:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1049
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Bei glVertexAttribPointer gibt es die Paramter, stride und Pointer.

https://wiki.delphigl.com/index.php/glV ... ribPointer

Mit stride gibt man die Block(Vertex)-Grösse an, mit Pointer wo der Anfang des Atributes ist.
Obwohl beide Werte eine Zahl bekommen, kommt bei strike ein Integer und bei Pointer ein Zeiger auf ein Integer.

Meine Frage, wieso haben nicht beide Werte einen Integer ?

Was noch komisch ist, beim obigen Link, sind 2 Integer-Werte vorhanden, ist dies ein Fehler des Tutorials ?

Code:
  1. glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 12,  0);  // alternativ auch stride=0
  2. glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 12, 36);  // alternativ auch stride=0


Auch das alternativ bei der 2. Zeile ist etwas komisch. :?
Wie kann dies 0 sein ?

Mit dem Pointer sieht dies etwas komisch aus:
Code:
  1. glVertexAttribPointer(11, 3, GL_FLOAT, False, 12, pointer(72));

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Mi Apr 19, 2017 21:42 
Offline
DGL Member

Registriert: Mi Sep 15, 2010 18:22
Beiträge: 59
Wohnort: Sachsen Meißen
Programmiersprache: Pascal, C(++), Java
Der Parameter Pointer kann einmal ein Offset sein, wenn ein VBO für GL_ARRAY_BUFFER gebunden ist, oder ein Zeiger auf ein Array.

_________________
bluesky


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Do Apr 20, 2017 07:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 529
Programmiersprache: C++
Mit dem letzten Parameter gibst du an, wo das Attribut zum ersten Mal vorkommt und mit dem vorletzten, nach wie viel Byte es sich wiederholt. Ob die Parameter jetzt als Pointer oder Integer deklariert sind, ist doch völlig wurscht. Ein Pointer ist für den Computer letztlich nichts anderes als ein unsigned integer. Sie dennoch als unterschiedliche Typen aufzufassen ist eine (willkürliche) Design-Entscheidung deiner Programmiersprache.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Do Apr 20, 2017 16:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1049
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wen ich es richtig verstehe, wurde bei OpenGL 2.0, der letzte Parameter als Zeiger auf die Vertex-Daten gebraucht, aus deisem Grund ist es noch als Pointer deklariert ?

Und mit
Code:
  1. Pointer(72)

mache ich nur eine Typen-Umwandlung.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Fr Apr 21, 2017 06:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 529
Programmiersprache: C++
Ja, scheint so als konnte man zu Zeiten von OpenGL 2.x tatsächlich Vertexdaten direkt aus dem RAM übergeben, ohne vorher ein VBO zu erzeugen. Das hat sich geändert. Dass du explizit von Int nach Pointer casten musst, bezweifle ich. In C(++) geht das auch implizit.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Fr Apr 21, 2017 17:31 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1049
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
Dass du explizit von Int nach Pointer casten musst, bezweifle ich. In C(++) geht das auch implizit.

Unter C++ geht dies direkt, aber Pascal verlangt eine Typenumwandlung.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: So Apr 23, 2017 22:59 
Offline
DGL Member
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 426
Programmiersprache: C / C++ / Lua
For the record: auch unter C++ ist das schlechter Stil. IIRC gibts dann auch ne warnung mit -wall

_________________
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Mo Apr 24, 2017 09:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4157
Programmiersprache: FreePascal, C++
g++ haut dir das mit einer Fehlermeldung um die Ohren gar:
Code:
  1. #include <stdint.h>
  2.  
  3. int main() {
  4.     uintptr_t y = 123;
  5.     void *x = y;
  6.     return 0;
  7. }

Code:
  1. $ g++ -o test test.cc
  2. test.cc: In function ‘int main()’:
  3. test.cc:5:15: error: invalid conversion from ‘uintptr_t {aka long unsigned int}’ to ‘void*’ [-fpermissive]
  4.      void *x = y;

Das ist ja einer der Vorteile von C++ gegenüber C, dass es strikteres Typechecking gibt, gerade in der Gegend von Pointern.

viele Grüße,
Horazont

_________________
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  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Mo Apr 24, 2017 16:53 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1049
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Somit wäre dies auf dieser Seite https://wiki.delphigl.com/index.php/glV ... ribPointer definitiv falsch.
Man müsste bei dem letzten Parameter Pointer(x) schreiben.

Soll ich dies ändern ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Di Apr 25, 2017 08:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
Man müsste in der Beschreibung auch noch einmal darauf hinweisen das es nur bei einen gebundenen Array tatsächlich ein Offset und ansonsten tatsächlich der Pointer zum ersten Element ist.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: glVertexAttribPointer Parameter
BeitragVerfasst: Di Apr 25, 2017 16:24 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1049
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Die Typen-Umwandlung habe ich jetzt mal hinein geschrieben.

_________________
OpenGL


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 » OpenGL


Wer ist online?

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