【问题标题】:OpenGL Drawing multiple objectsOpenGL绘制多个对象
【发布时间】:2020-07-22 10:41:02
【问题描述】:

我是否需要为每个我想渲染的对象单独绘制调用,然后交换缓冲区?

据我所知,我有一个 VBO 渲染,然后另一个 VBO 被投标并被绘制,毕竟我正在交换缓冲区以呈现后台缓冲区。

例如 //然后渲染

    float vertices[] = {
    -0.5f, -0.5f, 0.0f,
    0.5f, -0.5f, 0.0f,
    0.0f,  0.5f, 0.0f
    };

    //Create Vertex Buffer
    GLint VBO = 0;
    glGenBuffers(1, &VBO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

    glUseProgram(ShaderProgram);
    glDrawArrays(GL_TRIANGLES, 0, 3);

这里我画了一个三角形,如何用不同的着色器程序画第二个三角形

【问题讨论】:

    标签: opengl


    【解决方案1】:

    要绘制不同的对象,您需要不同的 VBO,这意味着对每个不同的对象都有不同的绘制调用。如果要多次绘制特定对象,可以使用实例化或绑定并多次绘制同一个 VBO。您可以为所有对象创建一个巨大的 VBO,但由于您是初学者,现在请坚持为每个对象创建一个 VBO。

    【讨论】:

    • 我确实在 EBO 中提出了连接选项,但这给我留下了关于如何在特定顶点步长上切换着色器程序的问题。无论如何,是的,我想我现在只会使用更多的绘制调用,现在运行未知实体的优化还为时过早:)
    猜你喜欢
    • 2016-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多