C++ OpenGL Rendern von einfachem OBJ aus einer Datei
Posted: 15 Jan 2025, 15:36
Ich verfolge derzeit ein grundlegendes OpenGL-Tutorial, dessen Ziel darin besteht, Daten aus einer .OBJ-Datei zu lesen und dann das Modell zu rendern. Das Tutorial finden Sie hier - http://www.opengl-tutorial.org/beginner ... l-loading/.
Derzeit mein Programm öffnet die angegebene OBJ-Datei und analysiert sie mit der im Tutorial hier beschriebenen Parsing-Engine - http://www.opengl-tutorial.org/beginner ... g_the_file.
Das Objekt, das ich zu rendern versuche, ist Der Cube befindet sich auf derselben Tutorial-Seiten-URL.
Ich glaube, mein Problem liegt in meiner Anzeigefunktion (void). Nachdem ich glutDisplayFunc(display); in meinem main() ausgeführt habe, wird mir ein schwarzes Fenster anstelle meines gerenderten Modells angezeigt.
Das ist mein aktuelle Anzeigefunktion (void):
Und hier sind die Daten, die mein Parser einliest, vielleicht handelt es sich um ein Parsing-Problem:
glGetError() hat bei mir kein einziges Mal einen Fehler erzeugt, daher konnte ich das Problem nicht auf diese Weise beheben.
Irgendwelche Vorschläge/Eingaben?
Derzeit mein Programm öffnet die angegebene OBJ-Datei und analysiert sie mit der im Tutorial hier beschriebenen Parsing-Engine - http://www.opengl-tutorial.org/beginner ... g_the_file.
Das Objekt, das ich zu rendern versuche, ist Der Cube befindet sich auf derselben Tutorial-Seiten-URL.
Ich glaube, mein Problem liegt in meiner Anzeigefunktion (void). Nachdem ich glutDisplayFunc(display); in meinem main() ausgeführt habe, wird mir ein schwarzes Fenster anstelle meines gerenderten Modells angezeigt.
Das ist mein aktuelle Anzeigefunktion (void):
Code: Select all
void display(void)
{
GLuint vbo;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3) * 3, &vertices[0], GL_STATIC_DRAW);
glDrawElements(GL_TRIANGLES, vertices.size() * sizeof(glm::vec3) * 3, GL_UNSIGNED_INT, &vertices[0]);
// check OpenGL error
GLenum err;
while ((err = glGetError()) != GL_NO_ERROR)
{
printf("OpenGL error: %u", err);
}
glEnd();
glutSwapBuffers();
}
Code: Select all
Success: GLEW_OK
Success: Opened OBJ File cube.obj
Read in Vertices: 1.000000, -1.000000, -1.000000
Read in Vertices: 1.000000, -1.000000, 1.000000
Read in Vertices: -1.000000, -1.000000, 1.000000
Read in Vertices: -1.000000, -1.000000, -1.000000
Read in Vertices: 1.000000, 1.000000, -1.000000
Read in Vertices: 0.999999, 1.000000, 1.000001
Read in Vertices: -1.000000, 1.000000, 1.000000
Read in Vertices: -1.000000, 1.000000, -1.000000
Read in texture coordinate: 0.748573, 0.750412
Read in texture coordinate: 0.749279, 0.501284
Read in texture coordinate: 0.999110, 0.501077
Read in texture coordinate: 0.999455, 0.750380
Read in texture coordinate: 0.250471, 0.500702
Read in texture coordinate: 0.249682, 0.749677
Read in texture coordinate: 0.001085, 0.750380
Read in texture coordinate: 0.001517, 0.499994
Read in texture coordinate: 0.499422, 0.500239
Read in texture coordinate: 0.500149, 0.750166
Read in texture coordinate: 0.748355, 0.998230
Read in texture coordinate: 0.500193, 0.998728
Read in texture coordinate: 0.498993, 0.250415
Read in texture coordinate: 0.748953, 0.250920
Read in Normals: 0.000000, 0.000000, -1.000000
Read in Normals: -1.000000, -0.000000, -0.000000
Read in Normals: -0.000000, -0.000000, 1.000000
Read in Normals: -0.000001, 0.000000, 1.000000
Read in Normals: 1.000000, -0.000000, 0.000000
Read in Normals: 1.000000, 0.000000, 0.000001
Read in Normals: 0.000000, 1.000000, -0.000000
Read in Normals: -0.000000, -1.000000, 0.000000
Reached end of file
Out Vertices Size: 234
Irgendwelche Vorschläge/Eingaben?