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

Aktuelle Zeit: Sa Apr 20, 2024 06:01

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



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Fr Mai 29, 2015 19:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ist dies richtig, das bei OpenGLSE 2.0 bei jedem Renderdurchgang, mittels GLES20.glVertexAttribPointer die Vertex-Daten von dem RAM in das VRAM kopiert werden ?

Es wird ja leider kein glGenVertexArrays und glBindVertexArray erkannt.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Sa Mai 30, 2015 11:47 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Nein.
Du musst in jedem Renderdurchgang die Vertexattributkonfiguration neu setzen, weil es wie du schon bemerkt hast, VAOs erst ab OpenGL ES 3.0 vorhanden sind. Die Vertexdaten kannst du selbstverständlich wie gewohnt in ein VBO ablegen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Mai 31, 2015 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe die GLES20 Version in Lazarus umgeschrieben, nur finde ich nirgends etwas von VBOs.
Oder kann ich etwas mit glGenBuffers und glBindBuffer basteln ?

Code:
  1. procedure TForm1.InitScene;
  2. begin
  3.   Shader := TShader.Create([vert, frag]);
  4.  
  5.   with Shader do begin
  6.     Vertex_id := AttribLocation('inPos');
  7.     Color_id := AttribLocation('inColor');
  8.   end;
  9.  
  10.   glClearColor(0.0, 0.5, 1.0, 1.0);
  11. end;
  12.  
  13. procedure TForm1.RenderScene;
  14. begin
  15.   glClear(GL_COLOR_BUFFER_BIT);
  16.  
  17.   // Triangle
  18.  
  19.   glVertexAttribPointer(Vertex_id, 3, GL_FLOAT, False, 0, @Triangle);
  20.   glEnableVertexAttribArray(Vertex_id);
  21.  
  22.   glVertexAttribPointer(Color_id, 3, GL_FLOAT, False, 0, @TriangleColor);
  23.   glEnableVertexAttribArray(Color_id);
  24.  
  25.   glDrawArrays(GL_TRIANGLES, 0, Length(Triangle) * 3);
  26.  
  27.   // Quad
  28.  
  29.   glVertexAttribPointer(Vertex_id, 3, GL_FLOAT, False, 0, @Quad);
  30.   glEnableVertexAttribArray(Vertex_id);
  31.  
  32.   glVertexAttribPointer(Color_id, 3, GL_FLOAT, False, 0, @QuadColor);
  33.   glEnableVertexAttribArray(Color_id);
  34.  
  35.   glDrawArrays(GL_TRIANGLES, 0, Length(Quad) * 3);
  36.  
  37.   OpenGLControl1.SwapBuffers;
  38. end;

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Mai 31, 2015 17:03 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Wie willst du ein VBO bekommen, ohne glGenBuffers, glBindBuffer, etc?
Das ist doch die einzige Möglichkeit. Das ist doch beim Desktop OpenGL nicht anders. (von DSA abgesehen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: So Mai 31, 2015 19:03 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe hier http://stackoverflow.com/questions/8552 ... ing-gles20 etwas gefunden.
Mit diesen Beispiel habe ich meinen Code erzeugt, ich hoffe, das es so richtig ist.

Code:
  1. procedure TForm1.InitScene;
  2. begin
  3.   Shader := TShader.Create([vert, frag]);
  4.  
  5.   with Shader do begin
  6.     Vertex_id := AttribLocation('inPos');
  7.     Color_id := AttribLocation('inColor');
  8.   end;
  9.  
  10.   glClearColor(0.0, 0.5, 1.0, 1.0);
  11.  
  12.   glGenBuffers(1, @VBTriangle.VBO0);
  13.   glGenBuffers(1, @VBQuad.VBO0);
  14.   glGenBuffers(1, @VBTriangle.VBO1);
  15.   glGenBuffers(1, @VBQuad.VBO1);
  16.  
  17.   glBindBuffer(GL_ARRAY_BUFFER, VBTriangle.VBO0);
  18.   glBufferData(GL_ARRAY_BUFFER, sizeof(Triangle), @Triangle, GL_STATIC_DRAW);
  19.   glEnableVertexAttribArray(Vertex_id);
  20.  
  21.   glBindBuffer(GL_ARRAY_BUFFER, VBTriangle.VBO1);
  22.   glBufferData(GL_ARRAY_BUFFER, sizeof(TriangleColor), @TriangleColor, GL_STATIC_DRAW);
  23.   glEnableVertexAttribArray(Color_id);
  24.  
  25.  
  26.   glBindBuffer(GL_ARRAY_BUFFER, VBQuad.VBO0);
  27.   glBufferData(GL_ARRAY_BUFFER, sizeof(Quad), @Quad, GL_STATIC_DRAW);
  28.   glEnableVertexAttribArray(Vertex_id);
  29.  
  30.   glBindBuffer(GL_ARRAY_BUFFER, VBQuad.VBO1);
  31.   glBufferData(GL_ARRAY_BUFFER, sizeof(QuadColor), @QuadColor, GL_STATIC_DRAW);
  32.   glEnableVertexAttribArray(Color_id);
  33. end;
  34.  
  35. procedure TForm1.RenderScene;
  36. begin
  37.   glClear(GL_COLOR_BUFFER_BIT);
  38.  
  39.   // Triangle
  40.  
  41.   glBindBuffer(GL_ARRAY_BUFFER, VBTriangle.VBO0);
  42.   glVertexAttribPointer(Vertex_id, 3, GL_FLOAT, False, 0, nil);
  43.  
  44.   glBindBuffer(GL_ARRAY_BUFFER, VBTriangle.VBO1);
  45.   glVertexAttribPointer(Color_id, 3, GL_FLOAT, False, 0, nil);
  46.  
  47.   glDrawArrays(GL_TRIANGLES, 0, Length(Triangle) * 3);
  48.  
  49.  
  50.   // Quad
  51.  
  52.   glBindBuffer(GL_ARRAY_BUFFER, VBQuad.VBO0);
  53.   glVertexAttribPointer(Vertex_id, 3, GL_FLOAT, False, 0, nil);
  54.  
  55.   glBindBuffer(GL_ARRAY_BUFFER, VBQuad.VBO1);
  56.   glVertexAttribPointer(Color_id, 3, GL_FLOAT, False, 0, nil);
  57.  
  58.   glDrawArrays(GL_TRIANGLES, 0, Length(Quad) * 3);
  59.  
  60.   OpenGLControl1.SwapBuffers;
  61. end;  

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jun 02, 2015 16:58 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Was mich verwundert, alle Tutorials, welche ich zu GLSE20 gefunden habe, rendern wie bei meinen ersten Post.
Ich habe glBindBuffer in mein Android-Programm eingebaut und es geht ohne Probleme.

_________________
OpenGL


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


Wer ist online?

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