合并" tinyobjloader"在我的OpenGL项目中

时间:2015-01-20 11:43:29

标签: opengl glfw .obj

这样我就可以加载OBJ文件并在openGL窗口中渲染它们。到目前为止,我已成功:

我想在我的openGL窗口中直观地渲染这些顶点,所以我猜这涉及两者的结合,但问题是怎么回事?我假设我的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;
}

还是我必须在外部链接到它?

1 个答案:

答案 0 :(得分:2)

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

它的形式为

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

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

然后在渲染过程中绑定VAO并绑定正确的材质并绘制。