将 "tinyobjloader" 合并到我的 OpenGL 项目中

incorporating "tinyobjloader" in my OpenGL project

这样我就可以加载 OBJ 文件并在我的 openGL 中渲染它们 window。到目前为止,我已经做到了:

我想在我的 openGL 中直观地渲染这些顶点 window,所以我想这涉及到将两者结合起来,但问题是什么?我假设我的 openGL 上下文吸收了 obj 导入器,而不是相反,但它会在代码中的什么位置:

#include <GLFW/glfw3.h>
#include <GLUT/glut.h>
int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */

        /* clearing */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

还是我必须 link 从外部访问它?

在 glfwMakeContextCurrent 和 while 循环之间,您应该读取 obj 并将值放入 VBO。

它的形式是

std::string err = tinyobj::LoadObj(shapes, materials, objStream, matSSReader);
if (!err.empty()) {
    glfwTerminate();
    return 1;
}

然后为每个形状的每个网格创建一个 VAO 和 VBO 放入数据中,设置 vertexAttributePointers 并保持网格中的顶点数。

然后在渲染期间绑定 VAO 并绑定正确的 material 并绘制。