Kann ich indizierte Primitive verwenden, wenn in OpenGL ES 1.x Eckpunktpufferspeicher Objekte mit?

StackOverflow https://stackoverflow.com/questions/268035

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe ein Array, das eine Liste von Scheitelpunkten enthält, die ich die GPU-Objekt unter Verwendung eines Eckenpuffer kopieren. Jedoch der Scheitelpunkt auf ihrem eigenen Koordinaten sind bedeutungslos, da ich auch einen Integer-Array aufweisen, die eine Liste von Indizes in den Vertex-Array enthält.

In diesem Szenario ist es möglich, ein weiteres Puffer-Objekt zu erstellen, um die Indizes zu speichern, und dann in der Funktion bind machen sowohl der Vertex-Array und Indizes für Array Zeichnung:

//vertex coordinates
glBindBuffer(GL_ARRAY_BUFFER, bufferId1);         
//index coordinates
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferId2); 

glVertexPointer(3, GL_FLOAT, 0, 0);
//Not sure if this should be Unsigned BYTE or Unsigned SHORT
glDrawElements(GL_POINTS, 6, GL_UNSIGNED_BYTE, 0);  

Ich habe die api und die folgende verwirrte mich lesen:
"Während ein Nicht-Null-Puffer-Objekt an das GL_ELEMENT_ARRAY_BUFFER Ziel gebunden ist, die Indizes der Parameter glDrawElements, die traditionell als ein Zeiger auf Client-seitigen Speicher interpretiert wird stattdessen als Offset innerhalb des Puffer-Objekt interpretiert gemessen in Maschinengrundeinheiten .“

Ich bin ziemlich neu in Grafiken Programmierung so entschuldige mich, wenn irgendetwas davon nicht sinnvoll ist.

War es hilfreich?

Lösung

Ja, das ist möglich. Die offizielle Tutorial sollten Sie zusammen helfen. Sie empfehlen, gegen die Verwendung von Byte ohne Vorzeichen, Stick mit 16 oder 32 Bit-Indizes für die Geschwindigkeit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top