这样我就可以加载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;
}
还是我必须在外部链接到它?
答案 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并绑定正确的材质并绘制。