Zeichnen eines Modells aus einer OBJ-Datei

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Zeichnen eines Modells aus einer OBJ-Datei

by Guest » 15 Jan 2025, 15:32

Ich versuche, einen OBJ-Viewer mit openGl zu schreiben. Dieses Programm muss nur Linien von Modellgesichtern zeichnen, daher muss ich Folgendes laden:
  • Scheitelpunkte: manchmal in 3D und manchmal in 4D;< /li>
    Gesichter: Indexlisten mit zufälligen Längen;
Jetzt lade ich nur noch die OBJ-Datei mit 3 Elemente pro Fläche, sodass ich das Element im GL_TRIANGLE-Modus zeichnen kann, aber ich bekomme einige Probleme mit einigen Modellen:

http://people.sc.fsu.edu/~jburkardt/dat ... hedron.obj

Die Ladephase scheint gut zu funktionieren, ich denke, das Problem liegt in der render()-Funktion:

Code: Select all

static void render(void)
{
glClearColor( 0.0f, 0.0f, 0.0, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);

glBindBuffer(GL_ARRAY_BUFFER, g_resources.vertex_buffer);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(
3,                                /* size */
GL_FLOAT,                         /* type */
3*sizeof(GLfloat),                /* stride */
(void*)0                          /* array buffer offset */
);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_resources.element_buffer);

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

glDrawElements(
GL_TRIANGLES,           /* mode */
theModel->face.size(),  /* count */
GL_UNSIGNED_INT,        /* type */
(void*)0                /* element array buffer offset */
);

glDisableClientState(GL_VERTEX_ARRAY);

glutSwapBuffers();
}
Ich habe auch einige Fragen:
  • Die Indizes beginnen bei 1 oder 0 ?
  • Was ist mit der Indeces-Aufzählung? Ist es im Uhrzeigersinn?
  • Ist es eine gute Lösung, die Gesichter mit mehr als 3 Indizes zu triangulieren?

Top